我要求将构建输出到目标的其他目录。
使用 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;时,我仍然得到错误的目标文件夹清洁或更重要的是自动构建。
答案 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;更新项目。
如果这样做无效,请删除.settings文件夹,然后重试。
修改强>
可能无法翻译构建部分中使用的属性。尝试硬编码:
<build>
<directory>differentTarget</directory>
<outputDirectory>differentTarget/classes</outputDirectory>
<testOutputDirectory>differentTarget/different-test-classes</testOutputDirectory>
</build>