我可以配置Maven忽略" test"如果我正在跳过运行测试,那么范围依赖性?

时间:2015-05-07 17:34:48

标签: dependencies maven-3 dependency-management maven-release-plugin

我正在使用Maven 3.2.2。在我的一个子模块中,我有这种依赖...

    <dependency>
        <groupId>org.mainco.subco</groupId>
        <artifactId>core</artifactId>
        <version>${project.parent.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
    </dependency>

如果我指定“-DskipTests”(或其他一些跳过测试选项),有没有办法让Maven在运行我的发布插件时忽略这种依赖?这是我的发布插件目标......

-Darguments="-DskipTests -P prod -Dcloudbees" -Dresume=false release:prepare release:perform

我意识到我可以解决构建这个依赖关系并准备好去的问题,但是当我不打算运行任何测试时,这个问题专门处理Maven忽略作为“test”的依赖关系。

谢谢, - 戴夫

1 个答案:

答案 0 :(得分:3)

在Maven开始执行目标之前,它会创建一个构建计划。无论范围如何,它都会经历所有依赖关系。但是,您可以使用由属性触发的配置文件来欺骗它。请注意,配置文件通常用于错误的原因(我注意到了prod-profile,这就是一个例子:配置不属于工件。这是另一个讨论,并且有足够的线程关于它。)

在这种情况下:

<profile>
  <activation>
    <property>skipTests</property>
    <value>!true<property>
  </activation>
  <dependencies>
  <!-- your test-scoped dependency -->
  </dependencies>
</profile>

所以它是可以的,但最好还是可以使用这种依赖。如果其他人检查了这段代码并尝试构建它,默认情况下它会失败,对吧?这不是用户的期望。