【问题标题】:Release project with SNAPSHOT test dependency发布具有 SNAPSHOT 测试依赖项的项目
【发布时间】:2016-09-30 11:12:44
【问题描述】:

我在我的项目中使用 快照依赖项仅用于测试

    <dependency>
        <groupId>com.my-company</groupId>
        <artifactId>my-test-library</artifactId>
        <version>LATEST</version>
        <scope>test</scope>
    </dependency>

我知道使用LATEST 的风险,但这正是我想在测试中实现的目标。但是,当我调用 mvn release:prepare 时,此测试依赖项阻止了生产代码的发布,但出现异常:

[INFO] Checking dependencies and plugins for snapshots ...
There are still some remaining snapshot dependencies.
...
Caused by: org.apache.maven.shared.release.ReleaseFailureException: Can't release project due to non released dependencies :
    com.my-company:my-test-library:jar:LATEST:test
in project 'My Project'

我的dependencyManagement

<distributionManagement>
    <repository>
        <uniqueVersion>true</uniqueVersion>
        <id>rep-releases</id>
        <name>Release Repo</name>
        <url>${url}</url>
    </repository>
    <snapshotRepository>
        <uniqueVersion>true</uniqueVersion>
        <id>rep-snapshots</id>
        <name>Snapshots Repo</name>
        <url>${url}</url>
    </snapshotRepository>
</distributionManagement>

为什么测试代码与发布过程有关?如何继续发布并保留依赖项?

【问题讨论】:

  • 你能否分享一下 pom.xml 中的distributionManagement 详细信息
  • 永远不要在版本中使用LATEST 之类的东西...此外,如果您依赖未发布的测试代码,您将无法重现您的构建。这就是发布插件抱怨的原因......
  • @khmarbaise 正如我所写,我知道使用 LATEST 并且没有可重复构建的所有后果。我只是问为什么发布插件在尝试发布 PRODUCTION 代码时抱怨 TEST 代码。
  • @nullpointer dependencyManagement 已添加
  • 它抱怨是可以理解的:如果使用仍在开发中的测试代码,则不能保证要发布的生产代码按预期正确测试。

标签: maven release maven-release-plugin


【解决方案1】:

您所做的确实违反了所有规则,您还应该首先发布您的测试依赖项,然后发布然后将项目的版本切换到快照并将测试范围的依赖项恢复到快照.

如果你真的、真的、真的必须做一些愚蠢的事情,那么你可以指定-DignoreSnapshots=true 选项。但是,这将忽略在您的 pom.xml 中定义的任何 SNAPSHOT 依赖项,这会更糟。

您已被警告。风险自负,愿上帝怜悯!

【讨论】:

  • 谢谢,我的问题的一部分得到了解答。但第二个仍然开放 - 为什么发布插件检查测试范围的依赖项?它不应该只检查生产代码依赖关系吗?
  • 因为创建版本的全部意义在于您将在未来任何给定时间点拥有完全可重现的代码状态。如果您有任何类型的 SNAPSHOT 并且您在 5 个月内重新构建代码,那么该测试依赖项可能已更改,您的标记代码可能不再工作,并且肯定无法重现。
【解决方案2】:

如果您知道使用 LATEST 的所有后果。你可以使用命令:

mvn release:prepare  -DignoreSnapshots=true

属性 ignoreSnapshots=true 允许 SNAPSHOT 依赖项

【讨论】:

    猜你喜欢
    • 2012-06-02
    • 2010-09-19
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 2015-01-05
    相关资源
    最近更新 更多