使用SNAPSHOT测试依赖项发布项目

时间:2016-06-01 07:53:55

标签: maven release maven-release-plugin

我在项目中使用快照依赖项

    <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>

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

2 个答案:

答案 0 :(得分:5)

您正在做的事情实际上是针对所有规则的,您还应首先发布测试依赖项,然后发布然后将项目版本切换为快照并将测试范围的依赖项还原到快照。

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

你被警告过了。继续冒风险,愿上帝怜悯!

答案 1 :(得分:1)

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

mvn release:prepare  -DignoreSnapshots=true

属性ignoreSnapshots=true以允许SNAPSHOT依赖项