在maven,您定义modules了pom.xml所有配置文件后,所有配置文件聚合在其中定义的模块:(仅限相关部分)
<project>
<modules>
<module>module1</module>
</modules>
<profiles>
<profile>
<id>pr1</id>
<modules>
<moudule>module2</module>
</modules>
Run Code Online (Sandbox Code Playgroud)
如果你执行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>
Run Code Online (Sandbox Code Playgroud)
这个要求可能听起来很愚蠢,但我只是想知道插件配置是否存在类似的机制.
<configuration self.combine="override"
Run Code Online (Sandbox Code Playgroud)
问候!
ssedano
Mic*_*ski 14
这是不可能的.配置文件配置始终与主配置合并,因此您只能在您的案例中添加模块.
但是,您可以做的是创建某种"默认"配置文件(<activeByDefault>true</activeByDefault>在<activation>部分中),在没有调用其他配置文件时启用该配置文件,并将默认模块列表放在那里.然后,当在Maven构建调用中没有指定配置文件时,使用此"默认"配置文件,但是当您显式调用至少一个配置文件时,它不是,因此您可以这样从头开始定义模块列表.
kaq*_*qao 11
虽然这个问题已经很久了,但谷歌仍然排名很高,所以添加一个新答案是有意义的.
您可以通过缺少属性技巧来激活,以实现您想要的效果.
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8215 次 |
| 最近记录: |