Maven,切换到不同的配置文件

Posted

技术标签:

【中文标题】Maven,切换到不同的配置文件【英文标题】:Maven, switching to a different profile 【发布时间】:2012-11-04 04:17:03 【问题描述】:

我对部署到持续集成服务器的项目的正确 maven 配置文件配置有疑问。

在我的项目中,有些资源只需要在日常构建阶段的测试中包含,而另一些则需要在夜间构建中包含,并且它们永远不能同时包含,因为构建过程会失败,我可以通过同时激活一个配置文件在本地实现。

持续集成服务器运行以下 maven 命令: - 在每日构建期间:

mvn clean package -Pci -Dci

-在夜间构建期间

mvn clean install -Dmaven.test.failure.ignore -Pci,nightly -Dci -Dnightly

如您所见,nightly build 命令包括在 daily build 命令中定义的 maven 变量和配置文件,这给我带来了一些麻烦,因为我只想同时激活一个配置文件。

具体来说,我想要的是拥有 3 个独立的个人资料: -my-pforile(默认激活,不用于 CI 服务器) -ci-profile(仅在每日构建时激活,在 CI 服务器上使用) -nightly-profile(仅在夜间构建时激活,在 CI 服务器上使用)

我怎样才能做到这一点?我几乎尝试了一切。重新配置 CI 服务器不是一种选择。

【问题讨论】:

【参考方案1】:

当我必须使用不同的配置文件配置相同的构建时,使用 Jenkins 作为 CI, 我通常创建与配置文件一样多的构建,因此每个构建都使用正确的配置。

如果添加新版本不是一个选项,您可以尝试创建一个解决方法 使用类似 exec 插件 (http://mojo.codehaus.org/exec-maven-plugin/) 来下载 来自 ftp(或其他)的资源。 您还必须创建一个 cron 作业(或等效的)来替换构建之间的正确资源: 晚上你把晚上的资源放在那里,早上把白天的资源放在那里。

但考虑到这个过程会有多麻烦,可能最好尝试添加 一个新的版本。

【讨论】:

+1 获取有关不同配置文件的不同构建的注释。对于集成测试也很重要。

以上是关于Maven,切换到不同的配置文件的主要内容,如果未能解决你的问题,请参考以下文章

Maven构建灵活配置文件

若依如何区分不同环境下配置文件?

如何使用 Maven 配置文件设置弹簧活动配置文件

maven (profiles)装载不同环境所需的配置文件

根据配置文件来切换不同服务的实现

maven profile动态选择配置文件