Tengo un pom padre con algunos complementos. En mi pom hijo, quiero excluir un plugin.maven exclude plugin defined in parent pom
¿Cómo puedo hacer esto?
Tengo un pom padre con algunos complementos. En mi pom hijo, quiero excluir un plugin.maven exclude plugin defined in parent pom
¿Cómo puedo hacer esto?
Puede declarar todos los complementos en su pom padre dentro de <pluginManagement>
. En cada niño, puede declarar los complementos que utiliza ese niño. De esta forma, puede incluir o excluir complementos según corresponda.
Puede consultar este relacionado SO discussion también.
Tenía un requisito similar para ejecutar algunos complementos en el elemento secundario pero no en el POM principal. Lo logré indicando <skip>true</skip>
en el POM padre.
la entrada pom matriz está por debajo
<plugin>
<groupId>eviware</groupId>
<artifactId>maven-soapui-plugin</artifactId>
<version>4.0.0</version>
<inherited>false</inherited>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
</dependency>
</dependencies>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
La entrada pom proyecto secundario está por debajo
<plugins>
<plugin>
<groupId>eviware</groupId>
<artifactId>maven-soapui-plugin</artifactId>
<version>4.0.0</version>
<configuration>
<settingsFile>site-service-web/src/test/soapui/soapui-settings.xml</settingsFile>
<projectFile>site-service-web/src/test/soapui/PodifiSite-soapui-project.xml</projectFile>
<outputFolder>site-service-web/target/surefire-reports</outputFolder>
<junitReport>true</junitReport>
<exportwAll>true</exportwAll>
<printReport>true</printReport>
</configuration>
</plugin>
</plugins>
Se puede usar un profile activado por una propiedad para determinar si se utiliza el plugin o no. De manera predeterminada, la propiedad podría activarse y el proyecto en el que no desea usar podría incluir el valor de la propiedad para excluir el complemento.
Se pueden definir todos los plugins en pom de los padres en la sección pluginManagement
<pluginManagement>
<plugins>
...
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>unpack-dependencies</id>
<phase>generate-sources</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<configuration>
<includeTypes>tar.bz2</includeTypes>
<outputDirectory>${project.basedir}/target/dependencies</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
</pluginManagement>
y un después en padre e hijo poms se puede controlar la fase de ejecución de este plugin
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<inherited>false</inherited>
<executions>
<execution>
<id>unpack-dependencies</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
</plugins>
Si pega esto en pom padre no se olvide de la opción <inherited>false</inherited>
, su herencia de ejecución de desactivación en pom niño.
trabajo para mí, gracias – sendreams
Esto funciona como un encanto e incluso tiene la ventaja de que el complemento nunca se ejecuta en primer lugar. El uso de 'ignore' en realidad todavía llamará al plugin, pero deja que el plugin decida. Usar 'phase = none' impide a Maven incluso buscar el classpath del plugin, lo que puede ser útil en algunos escenarios. – ctron
En mi caso tengo un complemento que es utilizado por 9 de 10 submódulos. Pensé que sería más fácil poner el complemento en el padre y dejar que los 9 hijos hereden y decirle al décimo para excluir. Sé la forma en que estás hablando. Me pregunto si es posible excluir un complemento de un proyecto secundario ... Si maven no tiene esa capacidad, está bien. No sé todo juntos, así que publicamos aquí para descubrir si maven tiene ese tipo de característica. – user373201
Esta respuesta realmente no responde a la pregunta de cómo excluir algún plugin heredado en particular. –