我正在为一个项目创建一个maven 2构建,我想出了配置文件,因为必须为不同的位置(比如柏林,巴黎,北极)和不同的环境(开发,生产)创建构建.这些是通过属性指定的.所以对于"北极""DEV"我这样做:
-Dlocation=NorthPole -Denvironment=DEV
Run Code Online (Sandbox Code Playgroud)
现在我想根据这两个属性来激活我的porfile,而不仅仅是一个.所以我试着跟随:
<profiles>
<profile>
<id>NOrth Pole DEV</id>
<activation>
<property>
<name>location</name>
<value>NorthPole</value>
</property>
<property>
<name>environment</name>
<value>DEV</value>
</property>
</activation>
... <!-- Set some North Pole DEV specific stuff -->
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
这不起作用,maven期望在<property>那里看到最多一个元素.
请注意我还有另一个用于物业的用途,因此使它成为locationEnv有价值的单一属性NorthPole-DEV不是我想要的.
那么有什么办法或解决方法或其他任何方法如何根据属性组合激活配置文件?
嗨,我想实现这样的事情:
在父母家里,我有
<profile>
<activation>
<property>
<name>Compile</name>
<value>${project.artifactId}</value>
...
Run Code Online (Sandbox Code Playgroud)
因此,如果我mvn -DCompile=mod1 install在父pom下运行,它只会将配置文件设置应用于模块1,而不应用于其他模块.
同样,如果我有
<profile>
<activation>
<property>
<name>Compile</name>
<value>${project.packaging}</value>
...
Run Code Online (Sandbox Code Playgroud)
然后mvn -DCompile=war install在父pom下运行,它只会将配置文件设置应用于那些要打包为战争而不是jar或pom的设置.
我试过但它没有按预期工作.我错过了什么吗?请帮忙.
PS无需建议解决方法,因为我只对此方法感兴趣.如果是这样的话,简单地回答它是不可能有理由的.谢谢