我目前使用的父<build>
对我75%的项目都很方便
相当完整。让我们称之为‘A’:
<build>
<plugins>
<!-- Bug Eclipse temporaire -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.1</version>
</plugin>
<!-- Compilation classique -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<charset>${project.build.sourceEncoding}</charset>
<docencoding>${maven.test.compile.encoding}</docencoding>
<forkMode>once</forkMode>
<argLine>${maven-compiler.memory}</argLine>
</configuration>
</plugin>
<!-- Plugin Surefire : exécution tests unitaires -->
<!-- Tous les tests sauf ceux débutant par IT* -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>${skip.unit.tests}</skipTests>
<excludes>
<exclude>**/IT*.java</exclude>
</excludes>
<configuration>
<argLine>-Xmx20g</argLine>
</configuration>
</configuration>
</plugin>
<!-- Plugin Failsafe : exécution de tests d'intégration -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<argLine>-Xmx20g</argLine>
</configuration>
</execution>
</executions>
<configuration>
<skipTests>${skip.integration.tests}</skipTests>
</configuration>
</plugin>
<!-- Javadoc plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<charset>UTF-8</charset>
<docencoding>UTF-8</docencoding>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- Source plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
</plugin>
<!-- Release -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
</plugin>
<!-- Deploy plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
</plugin>
</plugins>
</build>
然而,从一个子项目开始,对于下面的许多模块(其中25%(,需要通过执行几个插件来扩展它们的<build>
,而父pom.xml
中的插件应该继续执行。它们在这里,在'B'部分:
<build>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>4.4.0</version>
<executions>
<execution>
<id>scala-compile-first</id>
<phase>process-resources</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<recompileMode>all</recompileMode>
<sourceDir>src/main/scala</sourceDir>
</configuration>
</execution>
<execution>
<id>scala-test-compile</id>
<phase>process-test-resources</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<recompileMode>all</recompileMode>
<testSourceDir>${project.basedir}/src/test/scala</testSourceDir>
</configuration>
</execution>
</executions>
<configuration>
<scalaVersion>${scala.version}</scalaVersion>
</configuration>
</plugin>
</plugins>
</build>
我希望他们将它们添加到父pom已经执行的其他程序中。
如何避免使用a+B插件堆叠的pom.xml
?我有办法在子pom.xml
中用我希望它执行的附加插件">补丁"我的父<build>
吗?
换句话说,我不想在我的孩子pom:中有这个
<build>
<plugins>
<!-- Bug Eclipse temporaire -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.1</version>
</plugin>
<!-- Compilation classique -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<charset>${project.build.sourceEncoding}</charset>
<docencoding>${maven.test.compile.encoding}</docencoding>
<forkMode>once</forkMode>
<argLine>${maven-compiler.memory}</argLine>
</configuration>
</plugin>
<!-- Plugin Surefire : exécution tests unitaires -->
<!-- Tous les tests sauf ceux débutant par IT* -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>${skip.unit.tests}</skipTests>
<excludes>
<exclude>**/IT*.java</exclude>
</excludes>
<configuration>
<argLine>-Xmx20g</argLine>
</configuration>
</configuration>
</plugin>
<!-- Plugin Failsafe : exécution de tests d'intégration -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<argLine>-Xmx20g</argLine>
</configuration>
</execution>
</executions>
<configuration>
<skipTests>${skip.integration.tests}</skipTests>
</configuration>
</plugin>
<!-- Javadoc plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<charset>UTF-8</charset>
<docencoding>UTF-8</docencoding>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- Source plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
</plugin>
<!-- Release -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
</plugin>
<!-- Deploy plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
</plugin>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>4.4.0</version>
<executions>
<execution>
<id>scala-compile-first</id>
<phase>process-resources</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<recompileMode>all</recompileMode>
<sourceDir>src/main/scala</sourceDir>
</configuration>
</execution>
<execution>
<id>scala-test-compile</id>
<phase>process-test-resources</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<recompileMode>all</recompileMode>
<testSourceDir>${project.basedir}/src/test/scala</testSourceDir>
</configuration>
</execution>
</executions>
<configuration>
<scalaVersion>${scala.version}</scalaVersion>
</configuration>
</plugin>
</plugins>
</build>
目前,据我所见、所知和所经历,在子级pom.xml
中创建<build>
部分将完全覆盖父级pom的<build>
部分。
您不需要重复父POM中的任何内容。parent和child的构建部分会自动合并,因此在child POM中指定附加插件或执行就足够了。
如果您查看了有效的POM(例如,通过IDE或maven帮助插件(,您可以看到<build>
部分的合并版本。