【问题标题】:No such file: ‘pom.xml’ error in jenkins没有这样的文件:詹金斯中的“pom.xml”错误
【发布时间】:2022-01-30 05:13:24
【问题描述】:

我在Bitbucket 中有一个存储库。在那个存储库中,我有一个名为Demo 的项目,这是一个maven 项目。我正在尝试使用Jenkins 部署Demo

我正在遵循的步骤

  1. 在 Jenkins 中创建了一个工作(项目)。
  2. 配置(这是各个作业的配置)。

    项目名称:演示。

    说明:bla bla bla..

    源代码管理 -> Git -> 存储库 URL :git@bitbucket.org:UserName/ProjectName.git.

    ->凭据:提供我的凭据。

    构建-> 根 POM:pom.xml

一切看起来都很好,但是 pom.xml 抛出错误说:

因为这是它正在寻找 pom.xml 的 maven 项目,所以在提供路径时我很困惑。因为 Jenkins 正在汇集来自 Bitbucket 的源代码,它在 Demo 项目下有 pom.xml。

但我不知道这里提供哪条路径。

【问题讨论】:

  • 您执行了这项工作吗?为了让 Jenkins “看到” pom,您应该让作业克隆存储库至少一次。如果 pom.xml 存在于存储库根目录中,作业将看到它。尝试运行一次,然后再次打开配置,看看错误是否仍然存在。
  • @EldadAK 您可能应该将其添加为答案。这是最直接的解决方案。
  • 当我们推送代码时,从项目结构内部而不是项目文件夹外部推送代码。示例:maven 项目名称是 springfirstapp 打开这个 springfirstapp 文件夹有一个项目结构(.settings ,src 目标 pom.xml) 在这些结构中只有你应该推送代码。

标签: git maven jenkins


【解决方案1】:

您必须提及与 jenkins 工作空间相关的应用程序 pom.xml 的路径。

一旦 Jenkins 构建开始,它会将源代码下载到 .jenkins\jobs\yourjobname\workspace 并在那里构建,如果您不确定 pom 路径,可以检查此位置。

例如对于应用程序 Test .jenkins\jobs\jenkinsJobName\workspace\Test\pom.xml

The root pom field should be Test\pom.xml

【讨论】:

    【解决方案2】:

    如果您的工作区中有 pom.xml,请在 ROOT POM 中使用以下命令。

    $workspace\pom.xml
    

    【讨论】:

    • 这解决了我的问题,但对于类似 unix 的系统应该是正斜杠 $workspace/pom.xml
    【解决方案3】:

    使用 $workspace\"pom.xml 所在的目录名"\pom.xml

    【讨论】:

      【解决方案4】:

      我迟到了这个问题,这并不是一个真正的答案。我正在记录我遇到的一种情况,这可能有助于其他人解决 Jenkins 的“没有这样的文件”问题。

      我的环境是 Windows 上的 SVN、Maven (3.8.4) 和 Jenkins (2.330)。

      我需要从 SVN 中检查 3 个代码库,例如 o-base、p-base 和 p-core。

      有一个Maven继承,p-core --> p-base --> o-base(最顶层的pom),pom中的相对路径相应指向。

      我按照 o-base、p-base 和 p-core 的顺序检查了 SVN 中的代码。 (o-base check out 是非常必要的,因为在本地 Nexus 中可以使用单个 pom 的工件)。

      所有源代码都在以下目录结构中签出: $workspace/o-svn-base/o-base $workspace/o-svn-base/p-base $workspace/o-svn-base/p-core

      目标是封装 p-core。

      在 Jenkins Invoke top-level-maven Targets 中,我将 pom 文件路径指定为 ./o-svn-base/p-core/pom.xml(相对于工作区),找不到该文件。

      有效的是 ../p-core/pom.xml

      很明显,Jankins 将第一个签出目录作为代码目录,并计算了相对于该目录的 pom 文件路径。这种行为在任何地方都没有完全记录(或者我可能找不到);但是,这是非常不确定的。

      上面建议的答案是 $workspace; $workspace/o-svn-base/p-core/pom.xml(是的,正斜杠在 Windows 上有效)有效。

      在我看来,这是接近相对路径分辨率的正确方法,因为它是绝对确定的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-18
        • 1970-01-01
        • 2021-06-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多