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