【问题标题】:Maven : Build all dependencies but run tests on specific modulesMaven:构建所有依赖项,但在特定模块上运行测试
【发布时间】:2014-09-16 00:24:33
【问题描述】:

以下是我的项目结构:

Master
|
|--A
|--B
|--C

C 依赖于 A、B 和 Master。我想先编译 Master、A、B,然后是 C,但运行仅存在于 C 模块中的测试。

我想要一个也可以在 Jenkins 中使用的命令。

我经历了http://www.jayway.com/2013/06/09/working-efficiently-with-maven-modules/,但使用的是

mvn -pl :C -am 全新安装

在所有模块中构建和运行测试:Master、A 和 B。

【问题讨论】:

    标签: maven maven-3


    【解决方案1】:

    不可能使用单个命令为子模块运行不同的目标。

    假设您有以下结构:

    Parent
    |
    |---ModuleA
    |---ModuleB (Depends on ModuleC)
    |---ModuleC
    

    现在,如果您从 root pom(Parent)运行 mvn clean install -pl :ModuleB -am,您可以看到它构建了 Parent、ModuleC 和 ModuleB。

    要么以不同的方式重新组织你的代码库,要么运行如下代码:mvn clean install -pl :ModuleB -Dmaven.test.skip=true && mvn test -pl :ModuleB

    【讨论】:

    • 我可以使用两个命令。如何在 Jenkins 中指定相同的选项?
    • 我假设您在 Jenkins 中有一个 Maven 项目?可能最简单的方法是创建一个 Freestyle Project 并将该命令作为普通 shell 命令执行。或者您也可以将命令的前半部分添加为 Build Pre Step。
    • 原来的问题没有问任何关于詹金斯的事情;如果您对答案感到满意,请不要忘记批准我的答案:)
    【解决方案2】:

    您可以通过在 A 和 B 的 pom.xml 中指定来跳过测试。

    看到这个:http://maven.apache.org/surefire/maven-surefire-plugin/examples/skipping-test.html

    【讨论】:

      猜你喜欢
      • 2017-01-29
      • 2018-04-19
      • 1970-01-01
      • 2020-11-18
      • 1970-01-01
      • 2014-11-18
      • 1970-01-01
      • 2010-12-16
      相关资源
      最近更新 更多