簡體   English   中英

將maven-release-plugin升級到2.5.2后,快照版本未發布

[英]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

腳步:

  • mvn全新安裝
  • mvn發布:准備
  • mvn版本:執行

輸出:三者均成功

不知道我是否可以附加實際日志

片段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會發生什么:

  1. release:prepare會將您的項目從xyz-SNAPSHOT版本更新為xyz (項目的“發行”版本)commit +將所有更改推入Git存儲庫(或任何其他SCM)中,並創建一個名為bcd-xyz的標簽
  2. release:perform將從簽出的發行版bcd-xyz發行版中檢出/拉出並將其部署到您的存儲庫中
  3. 現在,發行版本xyz已部署在您的倉庫中。

這實際上是您使用Release插件的2.5.2版時發生的情況, 並且實際上是預期的和正常的行為。

這是您使用插件的版本2.3.2時發生的情況:

  1. release:prepare將項目從xyz-SNAPSHOT版本更新為xyz(項目的“發布”版本), 但是由於MRELEASE-812 ,更改從未推送到Git。 因此,使用項目的xyz-SNAPSHOT版本而不是正確的發行版本創建了標記,因為從未更新更新版本號的更改。
  2. release:perform將檢出實際上包含xyz-SNAPSHOT版本的*命名錯誤的*標簽bcd-xyz並將其作為SNAPSHOT部署在您的存儲庫中。
  3. 快照版本xyz-SNAPSHOT現在在您的存儲庫中可用。

Maven從未顯示任何錯誤,但這不是正確的行為。 您真正的問題實際上是您先前使用的插件,現在您的構建具有預期的行為;)

你可以做什么:

  • 我建議您使用最新的插件版本保留實際配置。 請記住,Maven版本插件是發布應用程序的版本 ,而不是快照。
  • 如果要將SNAPSHOT版本發布到存儲庫,請在包含SNAPSHOT版本的修訂版上使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM