2011-05-17 58 views
3

我有一个Maven项目依赖于Javassist进行版本3.12.1.GA,并有2个仓库(除中央一):JBoss的(https://开头库.jboss.org/nexus/content/groups/public)和Java.net(http://download.java.net/maven/2)。Maven的“版本”的插件,版本号顺序

这里是Javassist是每个库中的最新可用版本:

  • 中央:3.12.1.GA
  • JBoss的:3.12.1.GA(还包含3.3版本,见下文)
  • Java.net:3.3(唯一可用的版本)

当我运行mvn versions:display-dependency-updates,它说,我可以升级了Javassist版本:

javassist:javassist ......... 3.12.1.GA -> 3.3 

这意味着3.3 > 3.12.1.GA,在这种情况下,它不是真的!

如何告诉版本插件它不应该触摸javassist,或者它应该使用另一个顺序来执行此特定的依赖关系?

+0

您必须使用版本插件定义您自己的规则,因为javaassist不遵循Maven方式的版本编号。 – khmarbaise 2011-05-17 16:34:08

回答

2

原因是,Maven将版本号(不是Maven格式)视为字符串,因此3.3大于3.12.1.GA 您可以使用versions-maven-plugin并定义排除javassist(-Dexcludes = javassist:javassist)。 或者你可以编写自己的版本比较和使用它作为规则集。

如果您正在运行自己的资源库管理器,那么您当然可以使用正确的Maven版本编号手动添加javassist jar,以便versions-maven-plugin按预期工作。