Puede lograr su objetivo real de habilitar el plugin source-jars de forma predeterminada agregando dos perfiles a su POM. Los Maven profiles documentation notas que se pueden agregar un elemento <activeByDefault>true</activeByDefault>
a la sección activation
y afirma que
Este perfil se activa automáticamente para todas las versiones menos otro perfil en la misma POM se activa mediante uno de los métodos descritos anteriormente
Puede agregar dos perfiles, uno activeByDefault
, que incluye el complemento correspondiente, y otro que se puede activar de cualquiera de las formas estándar (como -P
desde la línea de comandos) para evitar el valor predeterminado perfil de ejecución. Por lo tanto, la sección profiles
en sus pom.xml
(o ajustes de Maven o lo que sea) podría tener este aspecto:
<profile>
<id>source-jars</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
...
</plugin>
</plugins>
</build>
</profile>
<profile>
<!-- active this profile to disable the source-jars plugin -->
<id>no-optional-plugins</id>
</profile>
Por desgracia, no puedo ver una manera de hacer este método se adapta bien para controlar múltiples plugins - Creo que se necesita O(n^2)
perfiles para n
complementos, pero para este simple caso debería funcionar bien.
Otra opción más simple, posiblemente con Maven ≥ 2.0.10 es simplemente tener el perfil source-jars
desde arriba (todavía activeByDefault
), y para manually deactivate the profile cuando se quiere anteponiendo el ID de perfil con -
o !
después de la bandera -P
CLI:
Este método no tiene los mismos problemas O(n^2)
con varios complementos, pero también es menos flexible, ya que la desactivación no puede ser activada por una propiedad del sistema, una variable de entorno, una versión JDK, etc.
Nuestros poms están escritos donde maven-source-plugin se ejecuta de forma predeterminada, así que tendré que reestructurarlos como sugieres. –
Hay muchos casos en los que es deseable que los complementos se activen de manera predeterminada y se inhabiliten mediante el uso de un perfil. Creo que esta respuesta evita el problema sin resolverlo. – Kevin
@Mowgli Pero el sistema de perfiles maven no es adecuado para eso: solo hay un mecanismo de "activación", no un mecanismo de "desactivación". Algunos complementos manejan esto creando un mecanismo de desactivación propio (por ejemplo, skipTests for surefire plugin). –