gpt4 book ai didi

Maven - 是否可以同时构建一个指定多个配置文件的项目?

转载 作者:行者123 更新时间:2023-12-04 23:41:41 24 4
gpt4 key购买 nike

我们正在为仅使用 Web 服务的应用程序开发 Maven 原型(prototype)。此原型(prototype)提供三个配置文件,每个环境(开发、预、专业)一个。

关键是我们希望为将来可能需要它们的项目提供可选地包含 ORM 依赖项(JPA、Hibernate)的可能性。我们已经创建了一个包含这些依赖项的附加配置文件。

当我们构建我们的项目时,我们使用 mvn package -Denvironment=dev。是否可以指定多个配置文件,例如:mvn package -Denvironment=dev,orm?

最佳答案

是的,这是可能的。但是您似乎对 how profiles are activated 感到困惑首先。

命令

mvn package -Denvironment=dev

不是 无需进一步配置即可激活任何配置文件。在您的情况下,它有效,因为您的 POM 中必须有一个配置文件定义,该配置文件定义由系统属性 environment 的存在激活。值为 dev .您的配置如下所示:
<profiles>
<profile>
<activation>
<property>
<name>environment</name>
<value>dev</value>
</property>
</activation>
</profile>
</profiles>

当您使用 -Denvironment 传递系统属性时,这就是激活配置文件的魔力。 .考虑到这一点,您可以使用相同的想法激活多个配置文件:声明多个 <profile>由系统属性的存在激活的元素。
<profiles>
<profile>
<activation>
<property>
<name>myAwesomeProperty1</name>
<value>true</value>
</property>
</activation>
</profile>
<profile>
<activation>
<property>
<name>myAwesomeProperty2</name>
<value>true</value>
</property>
</activation>
</profile>
</profiles>

如果 myAwesomeProperty1,上述配置将激活两个配置文件和 myAwesomeProperty2是一个系统属性,值为 true .

但是,在这种特殊情况下,您似乎想要根据您的环境激活构建,因此基于 -P 激活配置文件可能是一个更好的主意。命令行开关,而不是系统属性。

来自 Introduction to Build Profiles :

Profiles can be explicitly specified using the -P CLI option.

This option takes an argument that is a comma-delimited list of profile-ids to use. When this option is specified, the profile(s) specified in the option argument will be activated in addition to any profiles which are activated by their activation configuration or the <activeProfiles> section in settings.xml.

mvn groupId:artifactId:goal -P profile-1,profile-2


使用此解决方案,您可以使用多个配置文件 ID 调用 Maven。也就是说,如果你的配置中有
<profiles>
<profile>
<id>profile-1</id>
<!-- rest of config -->
</profile>
<profile>
<id>profile-2</id>
<!-- rest of config -->
</profile>
</profiles>

上述调用将同时激活 profile-1profile-2 .

关于Maven - 是否可以同时构建一个指定多个配置文件的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35747976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com