m2e忽略测试资源的testOutputDirectory

时间:2013-01-13 21:54:16

标签: eclipse maven m2e

我要求将构建输出到目标的其他目录。

使用 project.build.directory 输出 testOutputDirectory 属性可以使用mvn clean install从命令行正常工作,但是当我从eclipse构建时,如果我有一个target/test-classes目录,它会创建一个空的src/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 Indigo m2e 1.2.0 Maven Integration for WTP 0.15.3 >

修改

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

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

然后当我走 Maven&gt;时,我得到正确的行为更新项目... 但是当我去项目&gt;时,我仍然得到错误的目标文件夹清洁或更重要的是自动构建

3 个答案:

答案 0 :(得分:2)

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

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

在“源”选项卡上展开每个条目,编辑“输出文件夹”并将每个条目切换回项目默认值。

答案 1 :(得分:1)

默认情况下,所有maven POM都会继承Super POM。如果您查看Maven Super POM,可以看到 testOutputDirectory 被定义为项目/构建下的元素。我不确定你是否打算将它设置为财产。尝试覆盖元素&lt; testOutputDirectory&gt;直接在你的&lt; build&gt;下节

答案 2 :(得分:1)

有时m2e不会发现变化。

所以选择你的项目,鼠标右键单击 - &gt; Maven - &gt;更新项目

enter image description here

如果这样做无效,请删除.settings文件夹,然后重试。

修改

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

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