Jenkins: 父POM无法解析:

4

我有一个简单的多项目层次结构:

root/
  pom.xml
  project-a
    pom.xml
    subproject-a.1
        pom.xml
    subproject-a.2
        pom.xml
  project-b
    pom.xml
    subproject-b.1
        pom.xml
    subproject-b.2
        pom.xml

如果我从命令行构建一个项目(比如,subproject-b.1),该项目将会成功构建。然而,如果从Jenkins构建同一项目,则会出现错误:
[FATAL] Non-resolvable parent POM: Could not find artifact com.foo.bob:project-b:pom:1 in releases (http://xxxx.foo.com:9080/libs-release) and 'parent.relativePath' points at wrong local POM @ line 7, column 13

只需要子项目,而不是根项目或project-a/project-b模块。我查看了以下内容:Hudson build fail: Non-resolvable parent POM并确保我的父级relativePath设置为:

<relativePath>../pom.xml</relativePath> 

我需要在pom.xml文件中添加哪些内容才能使Maven与Jenkins良好地配合?


你在父级pom.xml中是否将<modules>设置为你的子项目? - JScoobyCed
它在哪个阶段失败了?有可能不是子项目-b1的构建失败,而是其父级的构建失败了吗?我在想,在尝试从子项目-b1位置解析父级relativePath时,根项目实际上会是../../pom.xml(位于project-b/pom.xml内)。 - JScoobyCed
你使用哪个版本控制系统?例如,使用Subversion可以仅检出子项目。如果是这种情况,相对路径对Jenkins没有意义。 - matsev
是的,这是Subversion。所以要使用Jenkins、Subversion和parent pom.xml文件,我需要为每个构建从根目录拉取整个源代码树吗? - Perry Hoekstra
拉取整个源代码树将解决您的问题,但也有其他解决方案 - matsev
显示剩余2条评论
1个回答

3
我也曾经遇到过同样的问题——在我的Windows 10系统上安装Jenkins之后。我甚至专门创建了一个任务来构建父POM并将其推送到我的本地Maven仓库中(或者我以为是这样)。结果发现,我的Jenkins服务设置为使用本地系统帐户,这导致构件被推送到系统文件夹中的仓库,而不是正常的用户.m2\repository下的本地Maven仓库。
解决方法如下:
1.进入控制面板->管理工具->服务
2.右键单击Jenkins服务并选择属性
3.在“登录”选项卡上选择“此帐户”,并输入您通常用于登录计算机的用户名和密码
4.单击确定并重新启动Jenkins服务

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接