【问题标题】:Can I configure Maven to ignore "test" scoped dependencies if I'm skipping running tests?如果我跳过正在运行的测试,我可以将 Maven 配置为忽略“测试”范围的依赖项吗?
【发布时间】:2015-07-18 10:31:18
【问题描述】:

我使用的是 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,当我不打算运行任何测试时,忽略范围为“测试”的依赖项。

谢谢,- 戴夫

【问题讨论】:

  • 这个问题你解决了吗?

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


【解决方案1】:

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

在这种情况下:

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

所以是的,它可以,但最好有这个依赖项可用。如果其他人检查此代码并尝试构建它,默认情况下它会失败,对吗?这不是用户所期望的。

【讨论】:

  • !true xml 无效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多