在maven
,一旦你定义你的modules
在你pom.xml
所有配置聚集在他们定义的模块:(相关部分只)
<project>
<modules>
<module>module1</module>
</modules>
<profiles>
<profile>
<id>pr1</id>
<modules>
<moudule>module2</module>
</modules>
如果执行mvn clean
它会通过命令module1
。
如果发出mvn clean -Ppr1
它会沿着传递到module1
和module2
。
我不知道在maven 3
就可以有一个pom.xml
与子模块和覆盖。 我的意思是执行一个配置文件,而不是添加自己的模块来构建力的,如:
<project>
<!-- omitted -->
<modules>
<!-- modules -->
</modules>
<build>
<!-- build -->
</build>
<profiles>
<profile>
<!-- This profile with no modules -->
</profile>
</profiles>
</project>
要求听起来很傻,但我只是想知道,如果有一种机制,就像在插件配置。
<configuration self.combine="override"
问候!
ssedano
这是不可能的。 配置文件配置总是与主要配置合并,所以你只能在你的情况下添加模块。
你可以做什么,而不是,但是,是创造某种“默认”配置文件(由<activeByDefault>true</activeByDefault>
在<activation>
部分)时,没有其他配置文件被调用已启用,并把您的默认模块列出存在。 然后,当Maven是指定配置文件建立通话,这种“默认”的个人资料被使用,但是当你明确地调用至少一个配置文件,它不是,那么你可以这样定义模块从头名单。
虽然这个问题是旧的,谷歌仍然是排名高,所以是有意义的增加一个新的答案。
您可以通过无财产招使用激活来实现你想要什么。
<profiles>
<!-- By default, include the modules -->
<profile>
<id>full-build</id>
<activation>
<!-- Activation by absence of a property. Run normally, without -Dfull-build -->
<property>
<name>!skip-modules</name>
</property>
</activation>
<modules>
<module>module1</module>
<module>module2</module>
<module>module3</module>
</modules>
</profile>
<!-- No-modules build -->
<profile>
<id>no-modules</id>
<activation>
<!-- Activation by a property. Run with -Dskip-modules to activate -->
<property>
<name>skip-modules</name>
</property>
</activation>
<modules>
</modules>
</profile>
</profiles>
你可以做这样的事情:
<profiles>
<profile>
<id>run-xyz</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<modules>
<module>www-ab</module>
<module>www-cd</module>
</modules>
</profile>
<profile>
<id>run-its</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<modules>
<module>www-db</module>
<module>www-it</module>
</modules>
</profile>
</profiles>
如果你是在谈论这样的事情。 但我会建议是这样的事情非常小心。
这只是你如何设置activeByDefault的问题。 有了这个有可能创造出更多或更少的任意组合。