1

我需要将我的构建输出到另一个目标目录。

使用project.build.directoryoutputtestOutputDirectory属性可以从命令行正常工作,但是当我从 eclipse 构建时,如果我有一个目录mvn clean install,它会创建一个空目录。target/test-classessrc/test/resources

一个具有相同行为的简单 pom 文件如下所示:

<project>
    <groupId>com.example</groupId>
    <version>1.0.0</version>    
    <modelVersion>4.0.0</modelVersion>
    <artifactId>reproduce</artifactId>
    <packaging>war</packaging>
    <properties>
        <project.build.directory>differentTarget</project.build.directory>
        <project.build.outputDirectory>${project.build.directory}/classes</project.build.outputDirectory>
        <project.build.testOutputDirectory>${project.build.directory}/different-test-classes</project.build.testOutputDirectory>
    </properties>

    <build>
        <directory>${project.build.directory}</directory>
        <outputDirectory>${project.build.outputDirectory}</outputDirectory>
        <testOutputDirectory>${project.build.testOutputDirectory}</testOutputDirectory>
    </build>
</project>

我的目录结构如下:

   |-src
   |---main
   |-----webapp
   |-------WEB-INF
   |---test
   |-----resources

我可以重现该行为的最简单方法是将所有目录都为空,除了<web-app />里面的 web.xml 。

当我有实际的测试类时,它会在target/test-classes目录中创建文件夹,然后将实际的类文件放在differentTarget/test-classes.

我在Debian上使用Eclipse Indigom2e 1.2.0Maven Integration for WTP 0.15.3

编辑

如果我删除properties和硬编码输出:

<build>
    <directory>differentTarget</directory>
    <outputDirectory>differentTarget/classes</outputDirectory>
    <testOutputDirectory>differentTarget/different-test-classes</testOutputDirectory>
</build>

然后当我去Maven > Update Project...时我得到正确的行为但是当我去Project > Clean或者更重要的是让它在Build Automatically时我仍然得到不正确的目标文件夹。

4

3 回答 3

2

尝试检查您的 Java 构建路径的输出文件夹。m2e 插件可能无法更新所有输出路径:

右键单击您的项目-> 构建路径-> 配置构建路径。

在 Source 选项卡上展开每个条目,编辑 Output Folder 并将每个条目切换回项目默认值。

于 2013-01-14T01:15:17.597 回答
1

默认情况下,所有 maven POM 都继承 Super POM。如果您查看Maven Super POM,您可以看到testOutputDirectory被定义为项目/构建下的一个元素。我不确定您是否打算将其设置为属性。尝试直接在 <build> 部分下覆盖元素 <testOutputDirectory>

于 2013-01-13T22:00:58.950 回答
1

有时 m2e 不接受更改。

所以选择你的项目,点击鼠标右键 -> Maven -> 更新项目

在此处输入图像描述

如果这没有帮助,请删除 .settings 文件夹并重试。

编辑:

也许它无法翻译构建部分中使用的属性。尝试硬编码:

 <build>
    <directory>differentTarget</directory>
    <outputDirectory>differentTarget/classes</outputDirectory>
    <testOutputDirectory>differentTarget/different-test-classes</testOutputDirectory>
 </build>
于 2013-01-13T22:07:48.753 回答