Sie können Ihr tatsächliches Ziel erreichen, indem Sie standardmäßig das Plug-in "source-jars" aktivieren, indem Sie Ihrem POM zwei Profile hinzufügen. Die Maven profiles documentation stellt fest, dass Sie ein Element <activeByDefault>true</activeByDefault>
zum activation
Abschnitt hinzufügen und stellen fest, dass
Dieses Profil automatisch aktiv sein wird für alle Versionen, es sei denn ein anderes Profil im gleichen POM aktiviert ist eines der zuvor beschriebenen Verfahren unter Verwendung von
So können Sie zwei Profile hinzufügen, von denen eines activeByDefault
ist, das das relevante Plugin enthält, und ein anderes, das auf jede Standardmethode (wie -P
von der Befehlszeile) aktiviert werden kann, um den Standard zu verhindern Profil vom Laufen. Der profiles
Abschnitt in Ihrem pom.xml
(oder Maven Einstellungen oder was auch immer), könnten daher wie folgt aussehen:
<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>
Leider kann ich nicht sehen, wie man auf diese Methode zur Steuerung mehrerer Plugins gut machen skalieren - ich glaube, Sie brauchen O(n^2)
Profile für n
Plugins, aber für diesen einfachen Fall sollte es gut funktionieren.
Eine weitere möglicherweise einfachere Option mit Maven ≥ 2.0.10 ist nur noch das source-jars
Profil von oben (noch activeByDefault
) und zu manually deactivate the profile, wenn Sie möchten, indem Sie die Profil-ID mit -
oder !
nach -P
CLI Flagge prefixing:
$ mvn -P !source-jars
Dieses Verfahren hat nicht die gleichen O(n^2)
Probleme mit mehreren Plugins, aber es ist auch weniger flexibel, da die Deaktivierung nicht durch eine Systemeigenschaft, Umgebungsvariable, JDK-Version usw. ausgelöst werden kann
Unsere Poms werden geschrieben, wo maven-source-plugin standardmäßig läuft, also muss ich sie neu strukturieren, wie Sie es vorschlagen. –
Es gibt viele Fälle, in denen Plug-ins standardmäßig aktiviert und durch Verwendung eines Profils deaktiviert werden sollen. Ich denke, diese Antwort vermeidet das Problem, ohne es zu lösen. – Kevin
@Mowgli Aber das maven-Profilsystem ist dafür nicht gut geeignet: es gibt nur einen "Aktivierungs" -Mechanismus, keinen "Deaktivierungs" -Mechanismus. Einige Plugins verarbeiten dies, indem sie einen eigenen Deaktivierungsmechanismus erstellen (z. B. skipTests für das todsichere Plugin). –