簡體   English   中英

如何替換 Maven 子模塊 pom.xml 文件中的版本號?

[英]How to replace version number in Maven submodule pom.xml files?

我有一個多模塊 maven 項目,子模塊從父項目屬性中獲取版本號,並且正在創建工件。

我的問題是在 nexus 存儲庫的子模塊的 pom.xml 中有${global.version}變量。 通過從父項目獲取版本號 (GOLD), commons-GOLD.jar成功地發生在 nexus 中。 但是,它是連接點${global.version}而不是 GOLD 中的 pom.xml 文件,當我添加 commons-gold 作為依賴項時, mvn 嘗試拉出cenatral/myProj.parent/$%7Bglobal.version%7D/myProj.parent-$%7Bglobal.version%7D.pom

MyProject 父項目 pom.xml

<version>${global.version}</version>
<packaging>pom</packaging>
<modules>
    <module>commons</module>
    <module>module2</module>
and so on

<properties>
    <!-- Unique entry point for version number management -->
    <global.version>GOLD</global.version>
</properties>

公共模塊 pom.xml

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.hmg</groupId>
    <artifactId>myproj.parent</artifactId>
    <version>${global.version}</version>
</parent>

我想將上面的${global.version}替換為來自父 pom.xml 的屬性。 即使有效的 pom 具有正確的值,nexus 也有原始 pom,這會導致 maven 命令在解析依賴項時失敗。

嘗試覆蓋它,但這沒有用。

mvn '-Dglobal.version=GOLD' dependency:tree

或者有沒有辦法如何忽略父pom進行依賴解析?

黃金神器就在那里。

工件創建

POM.xml 包含變量,導致依賴解析問題。

pom.xml 內容

如果我在另一個版本為 1.0.0 或 GOLD 的項目中使用 commons 作為依賴項,則無論版本如何,它都會尋求 ${version} ,因為它的 pom 在 nexus 中。

XDrive:>無法在 com.xyz:common:jar:1.0.0 處收集依賴項:無法讀取 com.xyz:common:jar:1.0.0 的工件描述符:找不到 com.xyz:myProj.parent:pom :${revision} in http://10.80.100.155:8085/repository/myProj-group/已緩存在本地倉庫中,除非central更新間隔已過或強制更新,否則不會重新嘗試解析-> [幫助1]

我猜你想要這個插件和用法,例如:

mvn versions:set -DgenerateBackupPoms=false -DnewVersion=1.2.3

這將更新所有模塊中的所有版本。

這里的問題很簡單,就是沒有正確使用flatten-maven-plugin

此外,您只能使用與此設置相關的以下屬性:

  • ${修訂}
  • ${sha1}
  • ${變更列表}

除此之外,您可以在不定義任何屬性的情況下使用 versions-maven-plugin。 除此之外,您可以使用增加版本號的發布插件,通常不需要定義屬性(僅在特定情況下)

暫無
暫無

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

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