2011-10-18 115 views
7

我有一個Jenkins master(運行在一個小的Linux機器上)和一個Jenkins slave(運行在「正確的」XP機器上)。jenkins slave使用哪個settings.xml?

我已經爲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 [email protected]: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文件?

回答

6

和往常一樣,解決方案比我想的要簡單。

Jenkins從站配置爲由系統用戶運行。 因此,爲了使用我的settings.xml,我所要做的就是更改關聯的用戶,並且問題消失了!

20

Maven使用全局設置和用戶設置文件。如果用戶設置文件存在,它將覆蓋全局文件。

全球之一位於%M2_HOME%\conf\,而用戶一位於%HOME%\.m2\。這裏%HOME%表示無論用戶運行Jenkins從站的主目錄。

所以最簡單的解決方案,假設在您的情況下可能,只需將正確的settings.xml文件複製到Jenkins從屬機器上的%HOME%\.m2\目錄。

或者,您可以使用--settings選項mvn命令行上指定一個自定義的settings.xml文件,所以你可以把文件中的一個已知位置(如C:\),然後告訴詹金斯將設置傳遞到Maven的,像--settings C:\settings.xml。另外,創建一個新的Windows用戶來運行Jenkins從服務器通常很有用,這樣你就可以很容易地知道它將在哪裏搜索配置文件。

+1

謝謝,我設置從服務作爲本地用戶和設置運行。C:/users/myuser/.m2/下的xml終於被拾起。此外:使用默認系統用戶並且沒有其他設置,使用maven安裝文件夾下的settings.xml。 – Rob

1

對我來說,使用-Duser.home變量得到了這個工作。

我確實得到了這個工作!但是,在配置jenkins屏幕中,我將它作爲JVM級別變量輸入到我的Web服務器,而不是 輸入到MAVEN_OPTS中。

對我來說,我在WinTell上使用glassfish,而不是tomcat。 Glassfish以一個 windows服務啓動。基本上進入:

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

然後,在這個目錄中/data/maven-2.2/jenkins請確保您有副本 正確輸入代理信息的有效settings.xml。這樣做允許我 爲我的jenkins服務構建隔離一個單獨的settings.xml,以交互方式登錄 。

埃裏克

相關問題