如何在构建项目前自动构建共享的Lib1-pom.xml依赖库?
当然可行,推荐这几个实用方案实现自动预构建共享库
方案1:Git子模块+多模块父POM
把Lib1作为Git子模块关联到两个项目的父模块里,既保留Lib1独立的Git同步链路,又能让Maven构建时自动先跑Lib1的构建:
- 到ProjectModule_1的根目录执行:
git submodule add <Lib1的Git仓库地址> lib1 - 修改ProjectModule_1-pom.xml,把lib1加入模块列表:
<modules> <module>lib1</module> <module>Project1</module> </modules>
- 对ProjectModule_2重复同样操作。这样两个父模块都能通过Git子模块引用独立的Lib1仓库,构建项目时Maven会自动先构建Lib1,再处理项目代码。
方案2:用exec-maven-plugin提前触发Lib1构建
在Project1和Project2的pom.xml里加插件配置,让Maven在构建初始化阶段自动去构建Lib1:
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <id>build-lib1</id> <phase>initialize</phase> <goals> <goal>exec</goal> </goals> <configuration> <!-- 替换成你本地Lib1的实际路径 --> <workingDirectory>${user.home}/projects/Lib1</workingDirectory> <executable>mvn</executable> <arguments> <argument>clean</argument> <argument>install</argument> </arguments> </configuration> </execution> </executions> </plugin> </plugins> </build>
这样构建Project1或Project2时,Maven会先自动切换到Lib1的目录执行mvn clean install,把Lib1装到本地仓库后再继续构建项目。
方案3:私有Maven仓库+CI自动同步
如果是团队协作场景,这个方案更省心:
- 搭一个本地/局域网的私有Maven仓库(比如Nexus)
- 给Lib1配个CI流水线(GitLab CI、Jenkins都行),只要Lib1的Git仓库有代码更新,自动构建并发布到私有仓库
- 在Project1和Project2的pom.xml里引用Lib1的快照版本,并且开启快照自动更新:
<repositories> <repository> <id>private-repo</id> <url>http://你的私有仓库地址</url> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> </repository> </repositories>
之后构建项目时,Maven会自动从私有仓库拉取最新的Lib1构建产物,完全不用手动干预。
内容的提问来源于stack exchange,提问作者Aman
相关产品推荐
相关产品推荐

