È possibile raggiungere il proprio obiettivo effettivo di abilitare il plug-in sorgente-jar per impostazione predefinita aggiungendo due profili al POM. Le Maven profiles documentation note che è possibile aggiungere un elemento <activeByDefault>true</activeByDefault>
alla sezione activation
e afferma che
Questo profilo sarà automaticamente attivo per tutte le build meno che un altro profilo nella stessa POM si attiva utilizzando uno dei metodi descritti in precedenza
Quindi, è possibile aggiungere due profili, uno dei quali è activeByDefault
, che include il relativo plug-in e un altro, che può essere attivato in uno dei modi standard (come -P
dalla riga di comando) per impedire il default profilo dalla corsa. La sezione profiles
nei tuoi pom.xml
(o impostazioni Maven o qualsiasi altra cosa) potrebbe quindi apparire come segue:
<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>
Purtroppo, non riesco a vedere un modo per rendere questo metodo scala bene per il controllo di più plugin - Penso che è necessario O(n^2)
profili per i plugin n
, ma per questo semplice caso dovrebbe funzionare correttamente.
Un'altra opzione possibilmente più semplice con Maven ≥ 2.0.10 è quello di avere solo il profilo source-jars
dall'alto (ancora activeByDefault
), e per manually deactivate the profile quando si desidera anteponendo l'ID del profilo con -
o !
dopo la bandiera -P
CLI:
Questo metodo non ha lo stesso O(n^2)
problemi con più plug-in ma è anche meno flessibile, poiché la disattivazione non può essere attivata da una proprietà di sistema, una variabile di ambiente, una versione JDK ecc.
fonte
2014-10-23 05:25:22
I nostri poms sono scritti dove maven-source-plugin viene eseguito di default, quindi dovrò ristrutturarli come suggerito. –
Esistono molti casi in cui è consigliabile attivare i plugin per impostazione predefinita e disattivati utilizzando un profilo. Penso che questa risposta eviti il problema senza risolverlo. – Kevin
@Mowgli Ma il sistema di profili maven non è adatto a questo: c'è solo un meccanismo di "attivazione", non un meccanismo di "disattivazione". Alcuni plugin gestiscono questo creando un proprio meccanismo di disattivazione (ad esempio, skipTests per il plugin surefire). –