jenkins slave使用哪个settings.xml?

时间:2011-10-18 12:26:14

标签: maven hudson jenkins slave

我有一个Jenkins大师(在一个小的Linux机器上运行)和一个Jenkins奴隶(在“正确的”XP机器上运行)。

我已经为在Windows XP奴隶上运行的所有jib配置了两个。

不幸的是,每次在该slave上运行构建时,构建都会因以下错误而失败:

ERROR: Ignore Problem expanding maven opts macros org.jenkinsci.plugins.tokenmacro.TokenMacro
Found mavenVersion 3.0.3 from file jar:file:/E:/java-ext/apache-maven-3.0.3/lib/maven-core-3.0.3.jar!/META-INF/maven/org.apache.maven/maven-core/pom.properties
Parsing POMs
ERROR: Echec à la lecture des POMs
hudson.util.IOException2: remote file operation failed: C:\hudson\workspace\Autocat at hudson.remoting.Channel@ee5bc4:ndx-PC-winXP
    at hudson.FilePath.act(FilePath.java:752)
    at hudson.FilePath.act(FilePath.java:738)
    at hudson.maven.MavenModuleSetBuild$RunnerImpl.parsePoms(MavenModuleSetBuild.java:817)
    at hudson.maven.MavenModuleSetBuild$RunnerImpl.doRun(MavenModuleSetBuild.java:617)
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:429)
    at hudson.model.Run.run(Run.java:1374)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:467)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:145)
Caused by: hudson.remoting.ProxyException: hudson.maven.MavenModuleSetBuild$MavenExecutionException: org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM: Failure to find fr.perigee.java:java-parent:pom:0.0.6 in http://tinkerpop.com/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of tinkerpop has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 3, column 10

我知道这个错误是由于包含这些工件的存储库定义不正确,因为在settings.xml中定义了使用的存储库。所以,我的问题很简单:如何定义Jenkins slave使用哪个settings.xml文件?

3 个答案:

答案 0 :(得分:21)

Maven使用全局设置和用户设置文件。如果用户设置文件存在,则它将覆盖全局文件。

全局版本位于%M2_HOME%\conf\,而用户位于%HOME%\.m2\。这里%HOME%表示运行Jenkins从站的任何用户的主目录。

因此,假设在您的情况下可行,最简单的解决方案是将正确的settings.xml文件复制到Jenkins从属计算机上的%HOME%\.m2\目录。

或者,您可以使用--settings选项在mvn命令行上指定自定义settings.xml文件,这样您就可以将文件放在已知位置(例如C:\)然后告诉Jenkins将设置传递给Maven,类似于--settings C:\settings.xml

顺便说一下,创建一个新的Windows用户来运行Jenkins从站通常很有用,这样您就可以轻松地告诉它将搜索配置文件的位置。

答案 1 :(得分:8)

与往常一样,解决方案比我想象的要简单。

Jenkins slave配置为由系统用户运行。 因此,要使用我的settings.xml,我所要做的就是更改其关联用户,问题就消失了!

答案 2 :(得分:1)

对我而言,使用-Duser.home变量的原因是什么。

我确实让这个工作了!但是,而不是 将它输入MAVEN_OPTS,在配置jenkins屏幕中,我将其作为JVM级别变量输入到我的Web服务器。

对我来说,我在WinTell上使用glassfish而不是tomcat。 Glassfish以a。开头 Windows服务。基本上输入了:

JVM变量名:user.home JVM值:/data/maven-2.2/jenkins

然后,在这个目录/data/maven-2.2/jenkins中确保你有一个副本 正确输入代理信息的有效settings.xml。这样做可以让我 为我的jenkins服务构建v。登录隔离一个单独的settings.xml 交互。

Eric