[英]How to prevent pushing SNAPSHOT version in maven-release-plugin?
[英]snapshot version not published after upgrading maven-release-plugin to 2.5.2
快照版本未發布在快照存儲庫中,而是發布了發行版本。
發布成功。 沒有錯誤。
唯一的變化是發布插件從2.3.2升級到2.5.2
還嘗試了2.5.1和2.5.3,但沒有一個有效。
使用Apache Maven 3.5.0
腳步:
輸出:三者均成功
不知道我是否可以附加實際日志
片段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>
您的問題是由影響2.3.2的Maven Release插件中的MRELEASE-812問題引起的,自2.5起已解決。 但是, 該插件實際上應該發布應用程序的發布版本 ,而不是快照版本。 當你說:
快照版本未發布在快照存儲庫中,而是發布了發行版本。
使用Release插件時,不應在存儲庫中發布快照版本。 實際上,預計會發布該發行版本。 詳細說明如下。
使用mvn release:prepare release:perform
會發生什么:
release:prepare
會將您的項目從xyz-SNAPSHOT
版本更新為xyz
(項目的“發行”版本)commit +將所有更改推入Git存儲庫(或任何其他SCM)中,並創建一個名為bcd-xyz
的標簽 release:perform
將從簽出的發行版bcd-xyz
發行版中檢出/拉出並將其部署到您的存儲庫中 xyz
已部署在您的倉庫中。 這實際上是您使用Release插件的2.5.2版時發生的情況, 並且實際上是預期的和正常的行為。
這是您使用插件的版本2.3.2時發生的情況:
release:prepare
將項目從xyz-SNAPSHOT版本更新為xyz(項目的“發布”版本), 但是由於MRELEASE-812 ,更改從未推送到Git。 因此,使用項目的xyz-SNAPSHOT
版本而不是正確的發行版本創建了標記,因為從未更新更新版本號的更改。 release:perform
將檢出實際上包含xyz-SNAPSHOT
版本的*命名錯誤的*標簽bcd-xyz
並將其作為SNAPSHOT部署在您的存儲庫中。 xyz-SNAPSHOT
現在在您的存儲庫中可用。 Maven從未顯示任何錯誤,但這不是正確的行為。 您真正的問題實際上是您先前使用的插件,現在您的構建具有預期的行為;)
你可以做什么:
mvn deploy
而不是創建發行版。 希望這可以幫助。 請隨時詢問詳細信息,我將更新我的答案。
根據您使用的命令/目標,這是預期的:
mvn clean install
將SNAPSHOT依賴項安裝在本地存儲庫上,但不會將其部署在Maven存儲庫上 mvn release:prepare
將您的POM更新為版本,並使用標簽更新SCM mvn release:perform
實際上將您的發布部署在存儲庫上 您的SNAPSHOT永遠不會部署在任何存儲庫上。 為此,應在使用release:*
目標之前運行deploy:deploy
目標。 例如:
mvn clean install deploy:deploy release:prepare release:perform
相當於:
mvn clean deploy release:prepare release:perform
請注意,應正確配置pom.xml和存儲庫,以允許部署SNAPSHOT工件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.