我正在寻找一种设置多个配置文件的方法,其中一个我希望设置为默认值(仅mvn clean install
运行应该选择该配置文件)。我对使用activeByDefault的任何解决方案都不感兴趣,因为它阻碍了我在另一个模块中创建单独的配置文件并同时使用默认配置文件。
目前我使用的属性方法如下:
<profiles>
<profile>
<id>prof1</id>
<activation>
<property>
<name>!myprop</name>
</property>
</activation>
</profile>
<profile>
<id>prof2</id>
<activation>
<property>
<name>myprop</name>
<value>prof2</value>
</property>
</activation>
</profile>
<profile>
<id>prof3</id>
<activation>
<property>
<name>myprop</name>
<value>prof3</value>
</property>
</activation>
</profile>
</profiles>
这意味着我必须使用mvn clean install -Dmyprop=prof3
编译我的项目,如果我想选择prof3而不是prof1(默认情况下不设置任何属性)。
但是我希望达到相同的效果但是使用-Pprofilename
编译我的项目而不是设置属性。我已尝试在<properties>
标记下的每个配置文件中添加该属性,但似乎默认情况下始终运行。我读到pom属性不能用于激活配置文件。
这有什么解决方法吗?比如有一个设置或属性文件(我不想在每次编译时都改变它)从中我可以获得属性并实现我使用-PprofileName
进行编译的目标?
答案 0 :(得分:5)
如果你没有激活另一个,你可以使用activeByDefault
作为运行的配置文件:
<activation>
<activeByDefault>true</activeByDefault>
</activation>
有关详细信息,请参阅http://maven.apache.org/guides/introduction/introduction-to-profiles.html
答案 1 :(得分:1)
由@Jens链接的documentation解释了触发配置文件的5种方式。除了activeByDefault
之外,我认为任何组合都不会为您提供所需的“其他或默认”触发器。
如果没有看到解释为什么无法使用activeByDefault
的其他poms,那么很难找到完全基于maven的解决方案。也许简化您的构建配置文件结构?
另一种方法是为mvn
创建名为dmvn
的别名,用于mvn -Pprof1
的默认maven,然后在需要时mvn
或prof2
使用3
{1}}。
答案 2 :(得分:0)
项目特定的命令行设置
我不确定它是否有助于解决您的问题,但是从Maven 3.3.1开始,还有另外一种方法来配置项目。
在项目基目录中,创建一个名为.mvn
的目录,并在其中放入一个名为maven.config
的文件:
-Pprof1
如果您执行mvn clean install
,将使用个人资料prof1
。如果您输入mvn clean install -Pprof3
,则构建会使用个人资料prof3
执行。