快照版本未在快照存储库上发布,而是发布版本版本。
发布成功。没有错误。
只有更改是将发布插件从2.3.2升级到2.5.2
同样尝试了2.5.1和2.5.3但没有工作。
使用apache maven 3.5.0
步骤:
输出:在所有三个
中建立成功不确定我是否可以附加实际日志
snippet pom.xml
<artifactId>maven-clean-plugin</artifactId>
<version>2.5</version>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<artifactId>maven-overview-plugin</artifactId>
<version>1.6</version>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5</version>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<scmCommentPrefix>: Release by maven </scmCommentPrefix>
<tagNameFormat>bcd-@{project.version}</tagNameFormat>
<arguments>-Denvironment=target</arguments>
</configuration>
<repository>
<id>apache.snapshots</id>
<url>https://repository.apache.org/content/repositories/snapshots</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<distributionManagement>
<repository>
<id>arm</id>
<name>Internal release Repository</name>
<url>url1</url>
</repository>
<snapshotRepository>
<id>arm</id>
<name>Internal Repository</name>
<url>url2</url>
</snapshotRepository>
答案 0 :(得分:1)
您的问题是由影响2.3.2的Maven Release插件中的问题MRELEASE-812引起的,并且自2.5以来已解决。但是,插件实际上应该发布应用程序的发布版本,而不是Snapshot版本。当你说:
快照版本未发布在快照存储库上,而是发布 版本已发布。
使用Release插件时,不应在存储库上发布快照版本。实际上预计会发布发布版本。详细解释如下。
使用mvn release:prepare release:perform
时会发生什么:
release:prepare
会将您的项目从版本x.y.z-SNAPSHOT
更新为x.y.z
(项目的“发布”版本)提交+将所有更改推送到您的Git存储库(或任何其他SCM)并创建一个名为bcd-x.y.z
release:perform
将从已标记的版本bcd-x.y.z
版本中签出/提取并将其部署到您的存储库x.y.z
现已部署在您的回购中。实际上,当您使用版本2.5.2版本时,会发生这种情况,实际上是预期和正常的行为。
以下是使用插件版本2.3.2时发生的情况:
release:prepare
将您的项目从版本xyz-SNAPSHOT更新为xyz,即项目的“发布”版本,然而由于MRELEASE-812,更改从未被推送到Git 。标记因此是使用项目的x.y.z-SNAPSHOT
版本而不是正确的发布版本创建的,因为更新版本号的更改永远不会被推送。 release:perform
将检出实际包含bcd-x.y.z
版本的*名称不正确的* x.y.z-SNAPSHOT
,并将其作为SNAPSHOT部署在您的存储库中。x.y.z-SNAPSHOT
现已在您的回购中提供。Maven从未显示任何错误,但这不是正确的行为。你真正的问题实际上是你之前使用的插件,你的构建现在有了预期的行为;)
你能做什么:
mvn deploy
,而不是创建版本。希望这会有所帮助。不要犹豫,询问细节我会更新我的答案。
答案 1 :(得分:0)
根据您使用的命令/目标,这是预期的:
mvn clean install
将您的SNAPSHOT依赖项安装到您的本地存储库,但它不会将其部署在您的Maven存储库 mvn release:prepare
更新您的POM以获取发布版本,并使用标记mvn release:perform
实际上在存储库您的SNAPSHOT nevers将部署在任何存储库中。为实现此目标,您应该在使用deploy:deploy
目标之前运行release:*
目标。例如:
mvn clean install deploy:deploy release:prepare release:perform
相当于:
mvn clean deploy release:prepare release:perform
请注意,应正确配置pom.xml和存储库以允许部署SNAPSHOT工件。