簡體   English   中英

Maven 釋放而不推送到 Nexus(又名 maven 中央)

[英]Maven Release without pushing to Nexus (aka maven central)

我有一個 java 應用程序,我想遵循典型的 maven 發布周期,但我不想或不需要將應用程序推送到 Nexus(或 Z402C5D9AF6B43711EA070BEE5170F7)。

當我跑

mvn release:prepare release:perform -Darguments="-DskipTests=true -Dmaven.javadoc.skip=true"

我在執行階段收到一個錯誤,提示 pom.xml 文件缺少將構建的工件推送到 NEXUS 所需的<distributionManagement>定義(我們的內部 maven 存儲庫)。

我正在使用 git 並且當我使用git log時,我可以看到我想要執行的所有其他步驟都已正確執行。

  • pom.xml 文件從 1.2-SNAPSHOT 更改為 1.2 並執行了提交,並創建了 git 標記以標記該版本。
  • 然后將 pom.xml 文件更改為 1.3-SNAPSHOT 以准備 git 分支以用於后續開發。

所以……一切看起來都很好。 我要做的就是告訴 maven 不要嘗試進行推送,以便命令完成而不會出現錯誤。 注意: release:prepare中的幾個文件被留下了,一個是release.properties ,但如果需要,我可以手動刪除它。

我正在尋找的一些解決方案是:

  • 你不能那樣做。
  • 只需取消release:perform並僅運行release:prepare 我現在正在測試這個。
  • 添加標志 -DmavenReleasePluginDontPushToNexus=true。 我正在編造這個,但想知道是否有一面旗幟。

我一直在尋找上述所有問題的解決方案,但還沒有找到答案。

尋找解決方案

Maven 發布插件

堆棧溢出搜索

我的猜測是,這已經被問過並回答過,但到目前為止我找不到它。

我確認, release:prepare階段將:

  • 驗證工作區中沒有未提交的更改。
  • 提示用戶輸入所需的標簽、發布和開發版本名稱。
  • 修改並提交發布信息到 pom.xml 文件中。
  • 用新的標記名稱標記整個項目源代碼樹。

您可能需要的release:perform中唯一缺少的步驟是將版本遞增到下一個 SNAPSHOT,將發布版本轉換為新快照,以便為下一批工作做准備。
需要使用version:set

您可以通過更改安裝目標來做到這一點,默認情況下它是部署:

<artifactId>maven-release-plugin</artifactId>
<configuration>
    <goals>install</goal>
</configuration>

另外,我認為您可以完全忽略 perform,因為 BOTH 發布版本和新開發版本的更新和提交都是通過准備步驟完成的: maven release plugin doc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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