现在一个项目是个多 module 的 maven 项目。整个项目是一个 git repo 。 整个项目由多个服务 module 和对应的 api module 组成(每个服务 module 对应一个 api module )。 类似如下目录结构: <ROOT> api/ a-svc-api/ b-svc-api/ service/ a-svc/ b-svc/
a-svc/里的 POM 文件已经加了对 a-svc-api 的依赖,如下:
...
<dependency>
<groupId>com.xxx.cloud</groupId>
<artifactId>a-svc-api</artifactId>
<version>${project.version}</version>
</dependency>
...
从 ROOT 目录下执行 mvn 打包所有的模块没有问题,能够在源码级解决依赖。
现在我想如果只在一个服务 module 下打包时,能不能从源码层面解决依赖。
因为 mvn package -f service/a-svc 时会试图从 maven 仓库下载 a-svc-api 这个包,如果提前 install 一把当然可以,但总觉得有点多此一举。
1
passerbytiny 2020-06-03 15:48:01 +08:00 via Android
根目录下:mvn package -pl 相对路径 /项目 id -am
|
2
passerbytiny 2020-06-03 15:51:24 +08:00 via Android
这个相对路径,是 maven module 多层嵌套的相对路径,并不一定是文件结构上的(虽然二者一般都是一样的)
|
3
312ybj 2020-06-03 16:08:37 +08:00
使用 Spring Boot Maven Plugin 插件
https://docs.spring.io/spring-boot/docs/2.2.1.RELEASE/maven-plugin/usage.html 可以避免从聚合项目重新打包 |
4
kyrre OP @passerbytiny 多谢指点,问题解决了。还是自己没看 mvn 的文档啊。
|
5
hantsy 2020-06-04 19:56:23 +08:00
POM 处理父子关系有好几个情况,涉及 BOM,继承等,最近国外有大佬写的一个系列:
https://cguntur.me/2020/05/20/understanding-apache-maven-the-series/ |
6
EastLord 2020-06-04 23:34:39 +08:00
|