【发布时间】:2015-03-21 22:46:28
【问题描述】:
我在一个 Maven 多模块项目中构建了几个模块。我可以在父目录中的头 pom.xml 上调用 maven 并构建所有模块。但是,Jenkins 只构建了我通过调用mvn -f <first child module it sees> 配置的几个 svn 存储库的第一个模块,而从不构建其他子模块。我尝试创建一个新的 Jenkins 项目,但出现了同样的问题。
【问题讨论】:
-
听起来你配置错了jenkins,因为通常你只配置文件名
pom.xml而没有路径。 -
我不认为这是我的错误。我已经尝试删除子模块目录,以便父文件夹只包含 pom.xml。只有这样,Jenkins 才会尝试在这个 pom.xml 上进行构建(并且因为找不到相关模块而失败)。在我添加模块的那一刻,它会在它找到的第一个模块上进行构建。这是禁用增量构建/并行构建的情况。
-
请展示您的 pom 文件并展示您的项目结构。可能你在 github 项目上有这个,所以它更容易研究?您在命令行和 Jenkins 中使用哪个 Maven 版本?您使用哪个 Jenkins 版本?
-
周末花了很多时间,但我终于弄明白了。本来会早点给你看的,但他们有很多识别信息,我的雇主对隐私很严格。该问题已通过将父模块目录列为作业中的存储库来解决。以前,该模块只是我要下载的 pom.xml。如果我没有将父模块列为 repos 之一,Jenkins 会认为我的 repos 下的第一个子模块是父 pom。列出父 pom 的绝对路径有助于干净构建,但不利于 mvn 增量构建。做我所做的工作。
-
补充说明:在 repos 中列出的第一个子 pom 构建之前,这实际上意味着对于增量构建,它将执行 -amd -pl
。这是不正确的,因为我会在 上进行更新,并且在 svn poll 之后它仍然会更新 Z。我应该向 Jenkins 提交 Jira 报告吗?