【发布时间】:2017-09-08 01:20:27
【问题描述】:
我在使用 Jenkins 时遇到问题。
在作业配置中,我将svn-repository定义为
svn://localhost/home/svn-repository/testRepo/branches/develop/
一切正常。 Jenkins 在自己的工作空间中检查存储库,如下所示:
workspace
|-- pom.xml
|-- src
|-- ...
并且 maven-goals 已成功执行。 但是如果我设置了repository的根目录(因为我想让Jenkins签出项目的最新版本,而不是一个特殊的分支),maven就找不到pom.xml了。
svn://localhost/home/svn-repository/testRepo/
本例中的 Jenkins 工作区是:
workspace
|-- branches
|-- develop
|-- pom.xml
|-- src
|-- ...
【问题讨论】:
-
你在SVN中的结构是错误的。
project/trunk,project/tags,project/branches应该是结构。对于默认的trunk,您应该将表示project/trunk的主干检出到您的工作区中。 -
尝试在jenkins job
pwd中添加shell命令,看看是从哪个目录下尝试执行job,并相对设置pom.xml路径 -
作业的错误信息是“目标需要一个项目来执行,但是这个目录(/var/lib/jenkins/jobs/TestJob/workspace)中没有POM。”。所以Maven显然试图从这个目录中读取pom.xml。
-
是否有可能告诉 Maven 在工作区的子目录中也进行搜索?
-
是的 - 在你输入 maven 目标的地方你可以输入
-f branches/develop/pom.xml来告诉 maven 使用什么 POM。但实际上,@khmarbraise 建议是最好的,您应该使用project/trunk目录来获取目录的最新版本,然后检查一下。如果您有时想从主干构建,有时从分支构建,那么您可以参数化 jenkins 作业并使用wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin 您可以添加一个“列出 subverion 标签”参数,该参数允许您从主干或其中一个分支中进行选择,或者标签。