【问题标题】:Maven cannot find pom.xml in Jenkins workspaceMaven 在 Jenkins 工作区中找不到 pom.xml
【发布时间】: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 jobpwd中添加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 标签”参数,该参数允许您从主干或其中一个分支中进行选择,或者标签。

标签: maven jenkins pom.xml


【解决方案1】:

Build 部分中,您有一个输入字段 Root POM,您可以在其中将(相对)路径添加到您的 pom 文件中,例如 testRepo/trunk/pom.xml。 p>

不知道为什么不将结帐限制在要构建的特定路径上。与 Git(您将拥有不同的项目结构)相比,这对于 SVN 来说是微不足道的。

【讨论】:

  • 我不想使用特定的路径,因为可能有几个分支,我希望 Jenkins 检查可能在其中任何一个中的最新版本。但我认为这没有任何意义。谢谢
猜你喜欢
  • 2018-01-28
  • 1970-01-01
  • 2013-09-27
  • 2012-08-16
  • 1970-01-01
  • 2015-02-02
  • 2019-06-24
  • 1970-01-01
  • 2018-02-22
相关资源
最近更新 更多