我正在尝试将我的Java项目构建为两个不同的版本,每个版本基于相同依赖项的不同版本。具体来说,我的项目A需要一个依赖关系B,它有两个不同的版本(例如v1和v2)。我希望用B的每个依赖版本构建项目A,并获得两个不同的工件:A-v1.jar和A-v2.jar。源代码是相同的,所以我不想将它复制到两个不同的Maven项目中,因为我希望在新版本的B发布时进行扩展。
到目前为止我尝试过:我定义了两个构建配置文件v1和v2,其中我已经指定了依赖关系B版本。这可以正常工作,因为我可以构建两个配置文件,但问题是我不知道如何告诉Maven为构建工件添加版本号。它总是将项目A构建到A-1.0.jar中,其中1.0是pom中的项目A版本。
我的调查的一个更新:我在父pom的构建部分添加了一个finalName元素来覆盖默认的工件命名。现在,命名将类似于$ {artifactId} - $ {project.version.mycustomver},其中project.version.mycustomver属性在每个构建配置文件中定义。这似乎生成了正确的jar命名,但是maven-install-plugin正在将工件名称更改回$ {artifactId} - $ {version}。不知道为什么以及如何避免它。
我感谢任何建议。谢谢, DanP
答案 0 :(得分:0)
您可以使用以某种方式为此制作的classifier
。
但您还应该能够使用在配置文件中覆盖的属性更改version
。
由于您需要两个不同的POM,每个项目的“版本”一个,您实际上需要两个项目。但是,您可以拥有一个普通版本A.而第二个是空的但使用依赖关系管理来排除和替换从A-v1更改为A-v2的依赖项。