[英]How to fix property resolution in multimodule maven build?
我正在將多存儲庫和多項目的構建過渡到單個存儲庫多模塊的構建。
每個項目都有自己的git repo,因此在簽出所有項目時都處於同一級別。
ProjectA
ProjectB
ProjectC
請務必注意,每個項目的版本都不同。 ProjectC
依賴於ProjectB
, ProjectB
依賴於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 :modulec
, mvn 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.