如何使用test-jar依赖项运行maven编译阶段

前端之家收集整理的这篇文章主要介绍了如何使用test-jar依赖项运行maven编译阶段前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在研究的项目由多个模块组成,使用maven构建.
某些模块中的测试代码依赖于其他模块的测试代码.
这些依赖关系声明如下.

在依赖模块中:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.2</version>
    <executions>
        <execution>
            <goals>
                <goal>test-jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

在依赖于前一个模块的模块中:

<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>themodulename</artifactId>
    <version>${project.version}</version>
    <type>test-jar</type>
    <scope>test</scope>
</dependency>

使用此配置,可以成功执行maven安装阶段.
但是尝试运行编译或测试阶段失败,因为无法解析测试jar文件依赖性.

查看测试jar目标,它似乎被配置为在程序包阶段默认运行,我认为这是导致问题的原因.

然后,我尝试在编译阶段强制执行此目标,方法是将第一个配置修改为:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.2</version>
    <executions>
        <execution>
            <phase>compile</phase>
            <goals>
                <goal>test-jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

查看调试日志,我可以看到目标现在在编译阶段执行,但是:

[WARNING] JAR will be empty - no content was marked for inclusion!

我尝试将包含配置为** / *并确认默认的testClassesDirectory设置为正确的,但我仍然得到相同的警告.

我可以看到在运行编译阶段后test-classes文件夹不存在,这似乎正常,但即使它在运行测试阶段后存在,并且它包含文件,我仍然会得到“JAR将为空”警告.

有没有人有任何想法修复此配置,以便我可以成功运行编译或测试阶段?

我坚信测试应该只是一个模块的一部分.您不应该依赖其他模块中的测试.如果更新测试以使其行为不同,则很难预测会发生什么.

如果您需要共享通用测试数据或通用测试类,那么最好使用该共享测试源创建单独的模块.然后让所有测试都依赖于带有范围测试的共享测试jar.

+-- MyProject
+-- common-test-util
|   +-- src
|   |    +-- main
|   |        +-- java
|   +-- pom.xml
+-- moduleA
|   +-- src
|   |    +-- main
|   |    |   +-- java
|   |    +-- test
|   |        +-- java
|   +-- pom.xml
+-- moduleB
|   +-- src
|   |    +-- main
|   |    |   +-- java
|   |    +-- test
|   |        +-- java
|   +-- pom.xml
+-- pom.xml

确保您只依赖于带有< scope> test< / scope>的common-test-util.然后你就可以打电话了

mvn test

在顶层,所有测试都将运行.

原文链接:https://www.f2er.com/javaschema/281680.html

猜你在找的设计模式相关文章