【问题标题】:Maven command line build vs Hudson buildMaven 命令行构建与 Hudson 构建
【发布时间】:2016-06-05 14:24:35
【问题描述】:

我在命令行上运行命令mvn clean package cf:push,它运行良好,没有任何问题。我还在同一台机器上安装了 Hudson。我使用Hudson Maven插件使用相同的Maven环境并运行相同的目标clean package cf:push,但出现以下错误:

[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.652 s
[INFO] Finished at: 2016-06-05T09:01:45+00:00
[INFO] Final Memory: 38M/357M
[INFO] ------------------------------------------------------------------------
[INFO] o.h.m.e.h.MavenExecutionResultHandler - Build failed with exception(s)
[INFO] o.h.m.e.h.MavenExecutionResultHandler - [1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.cloudfoundry:cf-maven-plugin:1.1.2:push (default-cli) on project gs-messaging-redis: Execution default-cli of goal org.cloudfoundry:cf-maven-plugin:1.1.2:push failed: An API incompatibility was encountered while executing org.cloudfoundry:cf-maven-plugin:1.1.2:push: java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V

【问题讨论】:

  • 如果你想在 Hudson 中运行它,请使用 freestyle type 而不是 Hudson 中的 MavenJob。

标签: maven hudson


【解决方案1】:

我浏览了日志,发现以下棘手的事情: 如果我这样为哈德逊设定目标clean package cf:push -e,实际上哈德逊执行的推荐是这样的:

mvn clean package cf:push -e -V -B -Dmaven.ext.class.path=/home/dingjianrui/hudson/maven/slavebundle/resources:/home/dingjianrui/hudson/maven/slavebundle/lib/maven3-eventspy-3.1.jar:/opt/tomcat/apache-tomcat-8.0.33/webapps/hudson/WEB-INF/lib/hudson-remoting-3.0.3.jar -Dhudson.eventspy.port=38570 -f pom.xml

这个命令实际上注入了一些Hudson自己特别使用的其他库,我猜它们是用于远程控制并将日志输出到某个地方,我无法禁用它们。

注入的库实际上与 maven 库有冲突。这就是为什么我收到以下警告:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/dingjianrui/hudson/maven/slavebundle/lib/maven3-eventspy-runtime.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/share/maven/lib/slf4j-simple.jar!/org/slf4j/impl/StaticLoggerBinder.class]

而且它还与我的插件库发生冲突,最终导致整个事情失败。

[INFO] o.h.m.e.h.MavenExecutionResultHandler - [1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.cloudfoundry:cf-maven-plugin:1.1.2:push (default-cli) on project gs-messaging-redis: Execution default-cli of goal org.cloudfoundry:cf-maven-plugin:1.1.2:push failed: An API incompatibility was encountered while executing org.cloudfoundry:cf-maven-plugin:1.1.2:push: java.lang.NoSuchMethodError: 

请记住,如果我在命令行上运行相同的命令mvn clean package cf:push -e,一切正常。 我的问题是如何避免注入的 Hudson 库与我的插件库之间的冲突?上面的根本原因是什么?

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 2011-08-05
    • 2014-04-18
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    相关资源
    最近更新 更多