我有两个几乎相同的配置文件。我不想复制每个配置中的配置,而是希望一个配置文件能够继承"继承"另一方面,但我没有看到使用maven 3做这件事的明显方法。
maven中是否可以进行配置文件继承?
答案 0 :(得分:17)
不,无法继承个人资料。
但是,您可以拥有多个活动配置文件,这可以让您通过将两个配置文件中的公共元素分解为您激活其他两个配置文件之一时激活的第三个配置文件来完成大致相同的操作。< / p>
答案 1 :(得分:2)
根据maven文档,严格来说,父pom中定义的配置文件在子pom中不可用,因此不会继承。但是,在父poms中指定的属性和构建插件(不是pluginManagement)可以被激活,从而修改子poms的构建环境。 例如,如果我有父pom A,它具有以下配置文件部分:
</profiles>
<profile>
<id>integrationTest</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<parallel>none</parallel>
<excludes>
<exclude>**/*Test.java</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<includes
<include>**/*IT.java</include>
</includes>
<!-- need to exclude nothing as it is possible that some by default some tests are excluded and we need to override that -->
<excludes>
<exclude>none</exclude>
</excludes>
<parallel>none</parallel>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
然后是一个没有故障安全插件的子pom B,它在默认构建中配置但是通过父标签从A pom继承,然后我从子pom目录运行'mvn clean install -P integrationTest',它将获取A。
中指定的插件信息