Ula*_*kar 38 java maven-2 maven
我在a中设置了配置文件,pom.xml
如下所示:
<profile>
<id><em>profileId1</em></id>
<build>
<filters>
<filter>src/main/filters/<em>profileId1</em>.properties</filter>
</filters>
// rest of the profile
</profile>
<profile>
<id><em>profileId2</em></id>
<build>
<filters>
<filter>src/main/filters/<em>profileId2</em>.properties</filter>
</filters>
// rest of the profile
</profile>
Run Code Online (Sandbox Code Playgroud)
题:
有没有办法从所有配置文件中提取这个部分,这样就不需要为每个配置文件重复它(并可能拼错它)?
alf*_*onx 34
使用maven 2.2.1及更高版本,我可以使用以下方法获取第一个活动配置文件的ID:
${project.activeProfiles[0].id}
Run Code Online (Sandbox Code Playgroud)
当然,如果没有至少一个活动配置文件,则会失败.
使用
${project.profiles[0].id}
Run Code Online (Sandbox Code Playgroud)
帕斯卡的建议并没有为我工作.
提示:在调查时,我真的开始喜欢了mvn help:evaluate
.
Mik*_*e R 15
作为替代${project.activeProfiles[0].id}
(它似乎不适用于旧版本的maven),只需定义一个属性:
<profile>
<id>dev</id>
<properties>
<profile-id>dev</profile-id>
</properties>
</profile>
Run Code Online (Sandbox Code Playgroud)
然后用${profile-id}
.
注意:只需确保默认情况下始终处于活动状态
根据PLXUTILS-37,应该可以使用“反射属性”访问列表或映射中的属性(有关更多信息,请参阅MavenPropertiesGuide )。
所以只要尝试一下${project.profiles[0].id}
,${project.profiles[1].id}
等等。
如果这不起作用(我没有检查它是否起作用),我将使用基于系统属性的配置文件激活,如构建配置文件简介并在过滤器中使用该属性中所述。像这样的东西:
<profile>
<id>profile-profileId1</id>
<activation>
<property>
<name>profile</name>
<value>profileId1</value>
</property>
</activation>
<build>
<filters>
<filter>src/main/filters/${profile}.properties</filter>
</filters>
// rest of the profile
</profile>
Run Code Online (Sandbox Code Playgroud)
要激活此配置文件,您可以在命令行中键入以下内容:
mvn groupId:artifactId:goal -Dprofile=profileId1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
30324 次 |
最近记录: |