8
我有一个多模块的maven项目,它建立成功,我想建立只有一个我有。我会怎么做profiles?我可以通过两种方式从控制台执行此操作,一种方式是转到子模块,然后我可以使用reactor来构建一个模块。单个模块的Maven配置文件
我可以用配置文件做同样的事吗?通过修改POM?谢谢
编辑
如果无法从POM,我可以做到这一点从settings.xml的?
我有一个多模块的maven项目,它建立成功,我想建立只有一个我有。我会怎么做profiles?我可以通过两种方式从控制台执行此操作,一种方式是转到子模块,然后我可以使用reactor来构建一个模块。单个模块的Maven配置文件
我可以用配置文件做同样的事吗?通过修改POM?谢谢
编辑
如果无法从POM,我可以做到这一点从settings.xml的?
要实现这与配置文件,您可以使用两个配置文件,一个<activeByDefault>
与所有模块和另一个只与想要的模块。事情是这样的:
<profiles>
<profile>
<id>all</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<modules>
<module>module-1</module>
...
<module>module-n</module>
</modules>
</profile>
<profile>
<id>module-2</id>
<modules>
<module>module-2</module>
</modules>
</profile>
<profiles>
然后调用它像这样:
mvn -Pmodule-2 package
两件事需要注意:
<modules>
从POM移动在“默认“配置文件(因为配置文件中的<modules>
只是附加的,它们不会隐藏在POM中声明的模块)。<activeByDefault>
,如果没有其他活动,则会选择“默认”配置文件,但如果有其他活动,则会取消激活。甚至可以参数化的模块的名称,并把它作为财产:
<profiles>
...
<profile>
<id>module-x</id>
<activation>
<property>
<name>module-name</name>
</property>
</activation>
<modules>
<module>${module-name}</module>
</modules>
</profile>
<profiles>
并调用行家这样的:
mvn -Dmodule-name=module-2 package
但是,这是一个糟糕的实现恕我直言,我更喜欢-pl
“高级”反应堆选项(少xml,更多的功率和灵活性):
mvn -pl module-2 package
@Pascal Thivent Just brilliant ..我不知道该说些什么..谢谢你m8,当涉及到maven时,你是首屈一指的 – ant 2010-03-08 13:40:54
我同意@Pascal是一位天才maven。我还会添加使用反应堆构建比配置多个配置文件更清洁的语音。 – 2012-11-13 21:17:46