Maven程序集:添加相同工件的不同版本

我使用maven程序集插件创建我的应用程序存档。 我的pom中存在的所有依赖都包含在内,没有任何问题。

现在我需要包含两个或更多版本的相同工件。

如果在我的pom我放

 [...]  db.test my-model 1.0.3   db.test my-model 1.1.0   

源代码依赖性解析器删除旧版本,只有1.1.0打包在存档中

我尝试使用程序集xml描述符文件包含jar。 我没有找到任何解决方案。

一种可能的解决方案是手动将所有需要的model.jar放入文件夹中,并告诉程序集将其复制到存档中。 但我正在寻找一个更可配置的解决方案。

任何想法 ?

我通过使用maven-dependency-plugin来复制已解决的pom依赖项和其他jar,找到了一个解决方案。

  org.apache.maven.plugins maven-dependency-plugin 2.1   copy-dependencies package  copy-dependencies   ${project.build.directory}/lib false false true runtime    copy-model package  copy     my.test.pkg my-model server 1.0.3 jar   my.test.pkg my-model server 1.1.0 jar   ${project.build.directory}/lib    

现在我只需要在程序集xml中添加以下行

   ${project.build.directory}/lib /lib false  *.jar  0600  

Maven认为一次拥有多个版本的模块没有任何意义。 它假定较新的版本替换旧版本。 如果不是,那就不是同一个模块。 我建议你给新模块一个不同的名称,并确保它有不同的包,以避免选择随机模块。

总的来说,Maven试图鼓励良好的应用程序设计,故意让它很难做出已经确定为坏主意的事情。

另一个丑陋的解决方案可能是使用WAR文件覆盖,利用这个机制在应用覆盖时不关注组件JAR文件的版本这一事实。

我同意,不同版本意味着更换旧版本。 如果我们必须为某些业务需求使用两个不同版本的Web服务。 最好在不同的包中生成存根,在添加到maven时,您可以在groupid指定不同的存根。 这应该工作。