[Java学习笔记]maven发布子模块到私服

在IDEA中有多个子模块,经常会出现其他项目需要引用到该子模块。这个时候往往需要将子模块发布到私有仓库。如果直接在子模块上maven deploy会出现无法正常引用的问题(如:Dependencies出现波浪线,无法下载jar包导致本地maven repository中没有jar包等问题)。

目录层级

在项目中可能会用到子模块sub-module或者子子模块sub-sub-module,这里举一个子子模块的例子。
假如项目AProject层级结构如下,而子子模块AProject-a-api需要部署到maven私服给项目B使用。子模块依层级向上依赖父级pom。

|-AProject(root)
|--- AProject-a
|         |-- AProject-a-api    #需要deployed给项目B使用
|         |-- AProject-a-server
|---AProject-b

问题

如果直接在AProject-a-api目录执行mvn deploy会无法使用,因为AProject-a-api依赖了Parent父级AProject-a的pom,而AProject-a又依赖了根级AProject的pom。直接将a-api部署到私服时,会因为找不到Parent pom无法打包或者打包后无法正常使用。

解决方法

综上所述,只需要将父级pom一起发布就能解决问题了。那么在parentpom下执行mvn deploy, 这样就会自动将parent pomsub-module以及sub-sub-module都发布到仓库。

1.在根目录AProject pom中添加distributionManagement

<distributionManagement>
    <repository>
      <id>maven-releases</id>
      <name>Releases</name>
      <url>http://www.loamen.com:8081/repository/maven-releases</url>
    </repository>
    <snapshotRepository>
      <id>maven-snapshots</id>
      <name>Snapshot</name>
      <url>http://www.loamen.com:8081/repository/maven-snapshots</url>
    </snapshotRepository>
</distributionManagement>

此处的idmavensetting.xml配置中的server id要一一对应,url也要对应。

<!-- setting.xml远程仓库配置-->
  <servers>
    <server>
      <id>maven-snapshots</id> // 快照仓库 ID 
      <username>admin</username>
      <password>admin1234</password>
    </server>
    <server>
      <id>maven-releases</id> // 发布仓库 ID 
      <username>admin</username>
      <password>admin1234</password>
    </server>
  </servers>
  
 <profiles>
    <profile>
        <id>dev</id>
        <repositories>
            <repository>
                <id>maven-snapshots</id>
                <name>maven-snapshots</name>
                <url>http://www.loamen.com:8081/repository/maven-snapshots/</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
            <repository>
                <id>maven-releases</id>
                <name>maven-releases</name>
                <url>http://www.loamen.com:8081/repository/maven-releases/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
            </repository>
        </repositories>
    </profile>
</profiles>

2.忽略发布AProject-bAProject-a-server

因为不需要发布子模块AProject-b和子子模块AProject-a-server,所以在这两个模块properties设置中忽略发布。

<!--AProject-b子项目pom中修改设置-->
<properties>
        <java.version>1.8</java.version>
        <maven.deploy.skip>true</maven.deploy.skip> #AProject-b添加跳过deploye设置
    </properties>
<!--AProject-a-server子子项目中pom中修改设置-->
<properties>
        <java.version>1.8</java.version>
        <maven.deploy.skip>true</maven.deploy.skip> #AProject-a-server添加跳过deploye设置
    </properties>

3.发布AProject-a-api模块

切换到AProject根目录,执行如下操作发布AProject-a-api子子模块。
命令:mvn deploy -pl 子模块 -am,这里先clean一下。

AProject> mvn clean deploy -pl AProject-a/AProject-a-api -am

看到如下消息即是发布成功了,然后到项目B中就可以从maven私服依赖引用了。

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  9.292 s
[INFO] Finished at: 2020-04-19T12:30:59+08:00
[INFO] ------------------------------------------------------------------------

mvn命令参数参考:

-am --also-make 同时构建所列模块的依赖模块;
-amd -also-make-dependents 同时构建依赖于所列模块的模块;
-pl --projects <arg> 构建制定的模块,模块间用逗号分隔;
-rf -resume-from <arg> 从指定的模块恢复反应堆。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354