9

我有一个 Jenkins 主机(在一个小型 Linux 机器上运行)和一个 Jenkins 从机(在“正确”的 XP 机器上运行)。

我已经为所有 jib 都配置了在 Windows XP 从站上运行。

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

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 从站使用哪个 settings.xml 文件?

4

3 回答 3

21

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

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

所以最简单的解决方案,假设在你的情况下是可能的,就是将正确的 settings.xml 文件复制到%HOME%\.m2\Jenkins 从机上的目录中。

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

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

于 2011-10-18T13:03:22.793 回答
8

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

Jenkins 从站配置为由系统用户运行。结果,要让它使用我的 settings.xml,我所要做的就是更改它的关联用户,问题就消失了!

于 2011-10-18T13:27:35.187 回答
1

对我来说,让它起作用的是使用 -Duser.home 变量。

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

对我来说,我在 WinTell 上使用 glassfish,而不是 tomcat。Glassfish 作为 Windows 服务启动。基本输入:

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

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

埃里克

于 2012-05-01T18:37:54.237 回答