maven父子模塊deploy 問題
1.問題描述:直接 deploy 子某塊,但第三者確不能引用 jar(jar down不下來,但pom不報錯)
原因:父子模塊項目必須保證父模塊pom deploy后,再 deploy 子模塊才能被引用到,或者直接 deploy 父 pom 將整個項目模塊deploy
2.問題描述:有兩個項目:父項目:A,子項目:B
在A /pom.xml中:
<groupId>com.dummy.bla</groupId>
<artifactId>parent</artifactId>
<version>0.1-SNAPSHOT</version>
<packaging>pom</packaging>
在B /pom.xml中,我有:
<parent>
<groupId>com.dummy.bla</groupId>
<artifactId>parent</artifactId>
<version>0.1-SNAPSHOT</version>
</parent>
<groupId>com.dummy.bla.sub</groupId>
<artifactId>kid</artifactId>
我想要B從父級繼承版本,所以我需要把0.1-SNAPSHOT放在A/pom.xml中的唯一地方就是A/pom.xml。但是,如果我從父節下的B/pom.xml中刪除<version>0.1-SNAPSHOT</version>,maven會抱怨父級的缺少版本。
有沒有辦法我可以使用${project.version}或類似的東西,以避免在兩個poms中有01.-SNAPSHOT?
第一:最佳解決方案
不,沒有。您必須指定父級版本。幸運的是,它被繼承為模塊的版本,在大多數情況下是理想的。此外,這個父母的版本聲明由Maven Release Plugin自動觸發,所以 – 實際上,只要你使用Maven Release Plugin發布或者只是碰撞版本,你就可以在2個地方使用版本。
請注意,在某些情況下,此行為實際上是可行的,并提供了更多的靈活性,您可能需要。有時你想使用一些以前的父母的版本來繼承,但這不是主流的情況。
第二:次佳解決方案(此方案不可行)
原因:雖然此方案本地編譯安裝可以;但 deploy到私服,外部仍然不能引用。因為${global.version}會打進父 pom和子jar包而不是替換,但引用外部jar包時,該jar 的父模塊版本需要確定
Maven不是以這種方式工作,而是為了實現這一目標而存在一種解決方法(可能是副作用,你將不得不嘗試一下)。訣竅是告訴孩子項目通過它的相對路徑而不是純粹的maven坐標找到它的父項,而且外部化一個屬性中的版本號:
父母pom
<groupId>com.dummy.bla</groupId>
<artifactId>parent</artifactId>
<version>${global.version}</version>
<packaging>pom</packaging>
<properties>
<!-- Unique entry point for version number management -->
<global.version>0.1-SNAPSHOT</global.version>
</properties>
小孩pom
<parent>
<groupId>com.dummy.bla</groupId>
<artifactId>parent</artifactId>
<version>${global.version}</version>
<relativePath>..</relativePath>
</parent>
<groupId>com.dummy.bla.sub</groupId>
<artifactId>kid</artifactId>
我把這個伎倆用于我的一個項目一段時間,沒有任何具體問題,除了maven在構建開始時記錄了很多警告,這不是很優雅。
EDIT
似乎maven 3.0.4不允許這樣的配置了。
第三種解決方案
最簡單的更新版本imo的方法:
mvn versions:set -DgenerateBackupPoms=false
(在您的根/父pom文件夾中這樣做)。
你的poms被解析,你被問到要設置哪個版本。
第四種方案
是的,但您也可以使用"mvn release:update-versions -DdevelopmentVersion={version}"來更新POM中的版本號

浙公網安備 33010602011771號