我们正在为仅使用Web服务的应用程序开发Maven原型.这个原型提供三个配置文件,每个环境一个(dev,pre,pro).
关键是我们希望为将来可能需要它们的项目提供可选的ORM依赖项(JPA,Hibernate).我们创建了一个包含这些依赖项的附加配置文件.
当我们构建项目时,我们使用mvn package -Denvironment = dev.是否可以指定多个配置文件,例如:mvn package -Denvironment = dev,orm?
是的,这是可能的.但是,您似乎对首先如何激活配置文件感到困惑.
命令
mvn package -Denvironment=dev
Run Code Online (Sandbox Code Playgroud)
将未激活而无需进一步配置任何个人资料.在您的情况下,它的工作原理是因为POM中必须有一个配置文件定义,该配置文件定义由系统属性的存在激活,其environment值为dev.您拥有的配置如下所示:
<profiles>
<profile>
<activation>
<property>
<name>environment</name>
<value>dev</value>
</property>
</activation>
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
当您传递系统属性时,这是使配置文件激活的神奇之处-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>
Run Code Online (Sandbox Code Playgroud)
如果myAwesomeProperty1且myAwesomeProperty2是具有该值的系统属性,则上述配置将激活两个配置文件true.
但在这种特殊情况下,您希望根据您的环境激活构建,因此根据-P命令行开关而不是系统属性激活配置文件可能更好.
可以使用
-PCLI选项显式指定配置文件.此选项接受一个参数,该参数是要使用的逗号分隔的profile-id列表.指定此选项后,除了激活配置或其中的
<activeProfiles>部分激活的任何配置文件外,还将激活option参数中指定的配置文件settings.xml.Run Code Online (Sandbox Code Playgroud)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>
Run Code Online (Sandbox Code Playgroud)
上面的调用将同时激活profile-1和profile-2.
| 归档时间: |
|
| 查看次数: |
5345 次 |
| 最近记录: |