maven - 在 Maven 构建期间跳过子模块

标签 maven continuous-integration jenkins

我们需要能够在某些环境中跳过子模块。

相关模块包含集成测试,需要半个小时才能运行。因此,我们希望在 CI 服务器上构建时包含它,但当开发人员在本地构建(并且运行测试)时,我们希望跳过该模块。

有没有办法通过配置文件设置来做到这一点?我已经进行了一些谷歌搜索并查看了这里的其他问题/答案,但没有找到好的解决方案。

我认为一个选择是从父 pom.xml 中完全删除该子模块,然后在我们的 CI 服务器上添加另一个项目来构建该模块。

建议?

最佳答案

Maven 版本 3.2.1 添加了此功能,您可以将 -pl 开关( shortcut 表示 --projects 列表)与 一起使用!- ( source ) 以排除某些子模块。

mvn -pl '!submodule-to-exclude' install
mvn -pl -submodule-to-exclude install

猛击角色时要小心!是一个特殊字符,因此您要么必须用单引号引用它(就像我所做的那样),要么使用反斜杠字符将其转义。

排除多个模块的语法与包含相同

mvn -pl '!submodule1,!submodule2' install
mvn -pl -submodule1,-submodule2 install

编辑 Windows 似乎不喜欢单引号,但在 bash 中是必需的;在 Windows 中,使用双引号(感谢 @awilkinson)

mvn -pl "!submodule1,!submodule2" install

关于maven - 在 Maven 构建期间跳过子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8304110/

相关文章:

java - Docker - Maven 在运行时连接到特定的存储库

java - 使用 mvn exec :java 执行 spring 应用程序

Java 通用代码在 eclipse 中构建,但不在 mvn 中构建(相同的 VM 版本)

android - 通过 Maven 使用 android 注释构建项目

javascript - 如何使用 jquery 和 CI 设置 href 模式

jenkins - 只有成功构建了另外两个项目后,如何构建 Jenkins 项目?

docker - 如何将文件复制到docker容器中的主机挂载目录

amazon-web-services - AWS 代码构建 : environment variables not found during CI jobs

Jenkins 脚本化管道或声明性管道

docker - 如何使用 Jenkins 管道发布 docker 镜像