允许构建单个模块并确保将对父 pom 的更改上传到本地存储库的 maven 方式是什么?
假设我有三个模块:一个父母,两个孩子(dbmod,appmod)
- 父级:dependencyManagement 定义 jdbc-foo 1.5
- dbmod: dependencies 定义 jdbc-foo 从父级获取版本
- appmod:依赖于 dbmod
情况
- 我从使用 jdbc-foo 1.5 的父级获取 parent-pom,使用 jdbc-foo 1.5 和 appmod 的 dbmod 构建。
- 我将源代码控制和父 pom 更改更新为 jdbc-foo 1.6
- 我在 dbmod 目录中构建
我在 appmod 目录中构建
appmod 从本地存储库获取 dbmod 并使用父 pom maven 问题的本地 repo 版本:“[警告] ...dbmod:jar:3.5.0-SNAPSHOT 的 POM 无效,传递依赖项(如果有)将不可用:为 dbmod:3.5.0-SNAPSHOT 构建有效模型时遇到了 1 个问题"
编译失败,因为我的代码依赖于对 jdbc-foo 1.6 更改的访问
选项
我可以通过以下方式解决问题:
- 手动安装父pom文件的问题,(mvn install-file ...)
- 从父级不必要的建筑物构建:我一直在构建所有模块
- 从父级构建选择所需的项目并使用also-make (mvn -am -pl :appmod ...) 不必要的构建:我必须一直构建所有的部门
第一个选项是个问题,因为我需要知道我需要这样做。第二个和第三个选项还要求我弄清楚我需要这样做,或者一直构建所有的 deps / all mods,这在大型系统中可能是一个问题。
如果有一个配置设置会强制父安装而不是“-am -pl :mod”,或者这是处理这种情况的“maven 方式”?
谢谢
彼得
(如果 maven 不能这样做,那么我可以纠正一个包装脚本,该脚本检查父级与本地 repo 父级并强制安装差异)