Maven& Jenkins按字母顺序排序类路径,但不是本地

时间:2014-04-25 13:28:38

标签: maven jenkins

我目前正面临着Jenkins 1.532.2和Maven 3.0.3的严重类路径问题。在本地,类路径顺序是正确的,并且所有JUnit测试都有效。但是在Jenkins上,类路径按字母顺序排序,而不是像定义的pom那样。

Jenkins的mvn dependencies:build-classpath输出(部分编辑):

axis/axis/1.4/axis-1.4.jar
axis/axis-wsdl4j/1.5.1/axis-wsdl4j-1.5.1.jar
com/company/ownlibrary.jar
com/microsoft/sqljdbc4/3.0/sqljdbc4-3.0.jar
com/oracle/ojdbc6/11.2.0.1.0/ojdbc6-11.2.0.1.0.jar
commons-codec/commons-codec/1.5/commons-codec-1.5.jar
commons-discovery/commons-discovery/0.2/commons-discovery-0.2.jar
commons-lang/commons-lang/2.4/commons-lang-2.4.jar
commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
junit/junit/4.11/junit-4.11.jar
log4j/log4j/1.2.17/log4j-1.2.17.jar
org/apache/axis/axis-jaxrpc/1.4/axis-jaxrpc-1.4.jar
org/apache/axis/axis-saaj/1.4/axis-saaj-1.4.jar
org/apache/poi/poi/3.8/poi-3.8.jar
org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
org/mockito/mockito-core/1.9.5/mockito-core-1.9.5.jar
org/objenesis/objenesis/1.0/objenesis-1.0.jar
org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar

这是mvn dependencies:build-classpath本地执行(部分编辑)的输出:

com\oracle\ojdbc6\11.2.0.1.0\ojdbc6-11.2.0.1.0.jar
commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar
org\apache\poi\poi\3.8\poi-3.8.jar
commons-codec\commons-codec\1.5\commons-codec-1.5.jar
de\company\xyz.jar
de\company\xyz2.jar
com\company\own.jar
log4j\log4j\1.2.17\log4j-1.2.17.jar
commons-lang\commons-lang\2.4\commons-lang-2.4.jar
com\microsoft\sqljdbc4\3.0\sqljdbc4-3.0.jar
axis\axis\1.4\axis-1.4.jar
org\apache\axis\axis-jaxrpc\1.4\axis-jaxrpc-1.4.jar
org\apache\axis\axis-saaj\1.4\axis-saaj-1.4.jar
axis\axis-wsdl4j\1.5.1\axis-wsdl4j-1.5.1.jar
commons-discovery\commons-discovery\0.2\commons-discovery-0.2.jar
org\slf4j\slf4j-api\1.7.5\slf4j-api-1.7.5.jar
junit\junit\4.11\junit-4.11.jar
org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar
org\mockito\mockito-core\1.9.5\mockito-core-1.9.5.jar
org\objenesis\objenesis\1.0\objenesis-1.0.jar

我使用Maven 3.0.3所以它应该使用pom定义的依赖顺序。

这个问题的根源是什么?如何解决?

其他信息:正如您在类路径项上看到的那样,我在Windows上本地构建,而Jenkins在Linux OS上运行。

新信息:Linux上的Maven进程也无法正常运行。我试图在Jenkins运行的机器上本地构建它,结果是一样的。尽管我尝试了Maven 3.0.3和3.2.1

,但是这个类路径是有序的

2 个答案:

答案 0 :(得分:1)

将Maven更新为3.2.1有助于排序类路径,但不是类路径问题。类路径不再在Jenkins上排序,但资源仍以错误顺序加载。

答案 1 :(得分:0)

恕我直言,班级路径顺序无关紧要。如果您遇到问题,则表示您正在加载同一个jar的多个版本。你不应该依赖类路径顺序 你应该理解它为什么会发生,如果你无法避免,可以使用mvn dependency:tree找出“坏”jar的来源,并在依赖它的依赖项中添加一个排除。

我希望这会有所帮助。