在从开源项目分叉模块时与 Maven 战斗。源代码是一个多模块 Maven 项目,具有以下结构:
.
|-- module-a
| `-- pom.xml
|-- module-b
| `-- pom.xml
|-- module-c
| `-- pom.xml
|-- module-...
| `-- pom.xml
`-- parent
`-- pom.xml
分叉整个项目不是一种选择。我只需要 fork 几个模块,例如module-a
和module-b
.
版本控制应该跟踪原始数字,在末尾附加一个后缀:-${org}-${inc}
,其中:
${org}
是组织的名称(固定)${inc}
是一个序数,每次我们发布从同一个社区版本分叉的项目时,我们都会增加它。
我通过保留父引用来保留返回原始项目的链接。所以我的分叉继承自社区的父 POM。
出现问题是因为社区父 POM 声明内部依赖项将由所有子工件使用<version>${project.version}</version>
.
因此,将我的 fork 版本设置为:3.10.1-org-01
不起作用,因为构建需要其他相关的工件,我不需要 fork 与 version 一起出现3.10.1-org-01
。
将 设置finalName
为类似的东西${project.artifactId}-${project.version}-${org}-${inc}
也无济于事,因为即使工件以正确的名称出现在构建输出目录 (target/) 中,它仍然会以旧名称安装到 Maven 存储库中,从而覆盖社区版本和创造一个不真实的现实。
在这种情况下,我也没有找到让分类器成为我朋友的方法。
除了分叉社区父 POM 和定制分叉模块的依赖版本号之外,还有什么想法吗?
谢谢!