簡體   English   中英

如何修復多模塊Maven構建中的屬性解析?

[英]How to fix property resolution in multimodule maven build?

我正在將多存儲庫和多項目的構建過渡到單個存儲庫多模塊的構建。

每個項目都有自己的git repo,因此在簽出所有項目時都處於同一級別。

ProjectA
ProjectB
ProjectC

請務必注意,每個項目的版本都不同。 ProjectC依賴於ProjectBProjectB依賴於ProjectA An。

我已經在與其他項目相同級別的文件夾中創建了一個超級pom,並將其他項目作為模塊添加到超級pom中,並在其他項目中引用了父pom,這導致了以下布局:

ProjectX
ModuleA
ModuleB
ModuleC

對於具有父引用的子模塊,如下所示:

<parent>
  <groupId>my.company</groupId>
  <artifactId>artifact</artifactId>
  <version>1.0-SNAPSHOT</version>
  <relativePath>../ProjectX</relativePath>
</parent>

我有一個settings.xml其中包含兩個配置文件,引用了每個模塊的正確快照和發行版:

<profile>
  <id>all-snapshot</id>
  <properties>
    <a.version>1.5-SNAPSHOT</a.version>
    <b.version>2.6-SNAPSHOT</b.version>
    <c.version>3.7-SNAPSHOT</c.version>
  </properties>
</profile>
<profile>
  <id>all-release</id>
  <properties>
    <a.version>1.4.0</a.version>
    <b.version>2.5.0</b.version>
    <c.version>3.6.0</c.version>
  </properties>
</profile>

如果我使用mvn clean install -s settings.xml -P all-snapshot -f ProjectX發布項目構建,那么一切似乎都可以正常工作,並且本地存儲庫中僅生成了快照依賴項。 如果我對all-release配置文件執行它似乎也可以正常工作,僅將發布版本下載到本地maven存儲庫。

但是,如果我嘗試構建單個模塊mvn clean install -s settings.xml -P all-snapshot -f ProjectX -pl :modulec全新mvn clean install -s settings.xml -P all-snapshot -f ProjectX -pl :modulecmvn clean install -s settings.xml -P all-snapshot -f ProjectX -pl :modulec得到:

Could not resolve dependencies for project modulec:3.7-SNAPSHOT: The following artifacts could not be resolved: moduleb:jar:${b.version}, moduela:jar:${a.version}

看起來屬性解析不能正常工作,這可能是因為Maven調用缺少了某些東西,或者是因為項目布局損害了Maven。

有想法該怎么解決這個嗎? 還是將存儲庫合並到單個版本中的更好方法?

我正在將多存儲庫和多項目的構建過渡到單個存儲庫多模塊的構建。

[...]

請務必注意,每個項目的版本都不同。

如果要為不同的項目使用不同的版本,強烈建議將它們保留在不同的存儲庫中,否則您將面臨各種工具問題。

暫無
暫無

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

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