IDEA maven 多模塊打包問題總結(jié)

在用IDEA構(gòu)建maven多module項目時,碰到了一些問題,現(xiàn)在歸納總結(jié)如下阱佛。

假如一個maven項目下分為幾個module帖汞,分別是不同的服務(wù),以及common模塊凑术,結(jié)構(gòu)如下:

shopping
├── common
├── mail-service
├── order-service
└── pay-service

則shopping pom大概率是如下內(nèi)容:

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.test.shop</groupId>
  <artifactId>shopping</artifactId>
  <version>0.0.1</version>
  <modules>
    <module>mail-service</module>
    <module>pay-service</module>
    <module>order-service</module>
    <module>common</module>
  </modules>
  <packaging>pom</packaging>

common pom的內(nèi)容大概如下:

  <parent>
    <groupId>com.test.shop</groupId>
    <artifactId>shopping</artifactId>
    <version>0.0.1</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <artifactId>common</artifactId>
  <version>0.0.7</version>
  <packaging>jar</packaging>

  <distributionManagement>
    <repository>
      <id>nexus</id>
      <name>Releases</name>
      <url>http://192.168.1.17:8081/repository/maven-releases</url>
    </repository>
    <snapshotRepository>
      <id>nexus</id>
      <name>Snapshot</name>
      <url>http://192.168.1.17:8081/repository/maven-snapshots</url>
    </snapshotRepository>
  </distributionManagement>

pay-service和order-service的pom會依賴common:

<dependency>
    <groupId>com.test.shop</groupId>
    <artifactId>common</artifactId>
    <version>0.0.7</version>
</dependency>

因為pay-service和order-service依賴common模塊(此時如果是在開發(fā)和測試階段是不需要將common發(fā)布到maven私服倉庫的翩蘸,但如果要打包必需發(fā)布common),如果要單獨打包pay-service或order-service淮逊,則需要將common發(fā)布到maven私服倉庫催首。在common模塊下執(zhí)行 mvn deploy 將common發(fā)布到倉庫,此時僅僅將common發(fā)布到了倉庫泄鹏,但由于common依賴其parent - shopping pom翅帜,而shopping pom并沒有并發(fā)布到倉庫,所以導(dǎo)致在打包pay-service或order-service時失敗命满。

問題總結(jié)成一句話:在發(fā)布子module時涝滴,如果依賴parent的pom,那在deploy到倉庫時胶台,要將parent pom也發(fā)布到倉庫歼疮,否則會因為找不到parent pom而無法打包。

解決這個問題有兩種選擇:

  1. 在parent的pom下執(zhí)行deploy, 這樣就會自動將parent pom以及sub module都發(fā)布到倉庫诈唬。
  2. 或者將子module的parent去掉韩脏,不要依賴不在倉庫中的pom,將子module提升為一個獨立的maven項目單獨發(fā)布铸磅。

這里我選擇第一種方式:在parent pom下執(zhí)行deploy赡矢,這樣如果有多個了module需要部署到倉庫也更方便。

將common pom中的 distributionManagement 刪掉阅仔,在shopping pom中添加 distributionManagement

  <distributionManagement>
    <repository>
      <id>nexus</id>
      <name>Releases</name>
      <url>http://192.168.1.17:8081/repository/maven-releases</url>
    </repository>
    <snapshotRepository>
      <id>nexus</id>
      <name>Snapshot</name>
      <url>http://192.168.1.17:8081/repository/maven-snapshots</url>
    </snapshotRepository>
  </distributionManagement>

此時在shopping目錄下執(zhí)行 mvn deploy 就會將shopping吹散、common、pay-service以及order-service都發(fā)布到maven倉庫八酒,但如果只想發(fā)布shopping和common怎么辦空民?

問題總結(jié)成一句話:parent pom在deploy時,默認會將所有子module都deploy到倉庫中羞迷,如果不想讓某個子module部署到倉庫界轩,可以在子module的pom中添加:

<properties>
    <maven.deploy.skip>true</maven.deploy.skip>
</properties>

在pay-service和order-service pom中添加如上屬性,再deploy就不會發(fā)布這兩個模塊到倉庫了衔瓮。

Spring boot maven plugin問題

在打包spring boot項目時浊猾,需要使用如下插件:

      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>

如果在用maven構(gòu)建多模塊項目時,不要將此插件放到parent pom中热鞍,否則如果有sub module不是spring boot應(yīng)用葫慎,在打包時就會出錯衔彻。只將該插件添加到是spring boot項目的子模塊。上面例子中common模塊不是spring boot應(yīng)用就不需要此插件幅疼,故不要將此插件放到shopping pom中米奸。

https://stackoverflow.com/questions/7446599/how-to-deploy-only-the-sub-modules-using-maven-deploy

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市爽篷,隨后出現(xiàn)的幾起案子悴晰,更是在濱河造成了極大的恐慌,老刑警劉巖逐工,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铡溪,死亡現(xiàn)場離奇詭異,居然都是意外死亡泪喊,警方通過查閱死者的電腦和手機棕硫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來袒啼,“玉大人哈扮,你說我怎么就攤上這事◎驹伲” “怎么了滑肉?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長摘仅。 經(jīng)常有香客問我靶庙,道長,這世上最難降的妖魔是什么娃属? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任六荒,我火速辦了婚禮,結(jié)果婚禮上矾端,老公的妹妹穿的比我還像新娘掏击。我一直安慰自己,他們只是感情好须床,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布铐料。 她就那樣靜靜地躺著,像睡著了一般豺旬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上柒凉,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天族阅,我揣著相機與錄音,去河邊找鬼膝捞。 笑死坦刀,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鲤遥,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼沐寺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了盖奈?” 一聲冷哼從身側(cè)響起混坞,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钢坦,沒想到半個月后究孕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡爹凹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年厨诸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片禾酱。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡微酬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出颤陶,到底是詐尸還是另有隱情颗管,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布指郁,位于F島的核電站忙上,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏闲坎。R本人自食惡果不足惜疫粥,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望腰懂。 院中可真熱鬧梗逮,春花似錦、人聲如沸绣溜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怖喻。三九已至底哗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锚沸,已是汗流浹背跋选。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哗蜈,地道東北人前标。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓坠韩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親炼列。 傳聞我的和親對象是個殘疾皇子只搁,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容