繁体   English   中英

m2e忽略测试资源的testOutputDirectory

[英]m2e ignores the testOutputDirectory for test resources

我需要将我的构建输出到目标的不同目录。

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

具有相同行为的简单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上有它时,我仍然得到不正确的目标文件夹。

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

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

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

默认情况下,所有maven POM都继承Super POM。 如果你看一下Maven Super POM ,你可以看到testOutputDirectory被定义为project / build下的一个元素。 我不确定你是否打算将它设置为财产。 尝试直接在<build>部分下覆盖<testOutputDirectory>元素

有时m2e不会发现变化。

因此,选择您的项目, 单击鼠标右键 - > Maven - >更新项目

在此输入图像描述

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

编辑:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM