发布带有 SNAPSHOT 测试依赖的项目

Release project with SNAPSHOT test dependency

我在我的项目 中使用 快照依赖项只是为了测试

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

为什么测试代码和发布过程有关系?我怎样才能继续发布并保持依赖关系不变?

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

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

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

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

mvn release:prepare  -DignoreSnapshots=true

属性 ignoreSnapshots=true 允许 SNAPSHOT 依赖关系