Maven - 我可以在配置文件定义中引用配置文件ID吗?
在pom.xml中我已经集合O配置文件是这样的:Maven - 我可以在配置文件定义中引用配置文件ID吗?
<profile> <id>profileId1</id> <build> <filters> <filter>src/main/filters/profileId1.properties</filter> </filters> // rest of the profile </profile> <profile> <id>profileId2</id> <build> <filters> <filter>src/main/filters/profileId2.properties</filter> </filters> // rest of the profile </profile>
有什么办法,我可以提取这一块的所有配置文件,所以没有必要重复这对于每一个配置文件(也可能拼错它)?
根据PLXUTILS-37,应该可以使用“反射属性”(请参阅MavenPropertiesGuide了解更多信息)访问列表或地图中的属性。
所以只是尝试${project.profiles[0].id}
,${project.profiles[1].id}
等
如果这不起作用(我没有检查,如果它),我会使用配置文件激活基于在Introduction to build profiles描述的系统性能和在过滤器中使用该属性。类似的东西:
要激活此配置文件,您可以在命令行中输入:
mvn groupId:artifactId:goal -Dprofile=profileId1
与Maven 2.2.1或更高版本,我能拿到第一的ID活动配置文件使用:
${project.activeProfiles[0].id}
当然,如果没有至少一个活动配置文件,则会失败。
使用
${project.profiles[0].id}
由帕斯卡尔建议做不为我工作。
提示:在调查这个,我才真正开始喜欢mvn help:evaluate
至于${project.activeProfiles[0].id}
替代(这似乎并没有工作在旧版本的Maven的),只是定义属性:
<profile>
<id>dev</id>
<properties>
<profile-id>dev</profile-id>
</properties>
</profile>
然后使用${profile-id}
。
注:只要确保一个始终处于活动状态默认
为什么我看到蛇咬尾巴? – 2016-03-10 12:19:26
使用'$ {project.activeProfiles [0] .ID}'完全为我工作。您可以确保至少有一个配置文件在一个配置文件的激活块中使用' true activeByDefault>'激活。 –
SimonB
2012-02-14 11:03:14
同样在这里,$ {project.activeProfiles [0] .id}起作用,maven 3.2 – chrismarx 2016-06-13 14:56:58
出于某种原因,它不会提取父pom属性;因此,例如,如果激活2个配置文件,其中一个配置文件来自父项,则只会检索当前项目属性。 – ftkg 2016-12-08 18:08:52