加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 20:07:36 所属栏目:百科 来源:网络整理
导读:我正在研究的项目由多个模块组成,使用maven构建. 某些模块中的测试代码依赖于其他模块的测试代码. 这些依赖关系声明如下. 在依赖模块中: plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-jar-plugin/artifactId version2.2/version execut
我正在研究的项目由多个模块组成,使用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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读