Вы можете достичь своей реальной цели, включив плагин source-jars по умолчанию, добавив два профиля в свой POM.В документации о профилях Maven указано, что вы можете добавить элемент <activeByDefault>true</activeByDefault>
в раздел activation
, и говорится, что
Этот профиль будет автоматически активен для всех сборок, если только не другой профильв том же POM активируется с помощью одного из ранее описанных способов
Итак, вы можете добавить два профиля, один из которых activeByDefault
, который включает в себя соответствующий плагин, и другой, который может бытьактивируется любым из стандартных способов (например, -P
из командной строки), чтобы предотвратить запуск профиля по умолчанию.Поэтому раздел profiles
в вашем pom.xml
(или в настройках Maven, или в любом другом) может выглядеть следующим образом:
<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>
К сожалению, я не вижу способа сделать этот метод хорошо масштабируемым для управления несколькимиплагины - я думаю, вам нужны O(n^2)
профили для n
плагинов, но для этого простого случая он должен работать нормально.
Еще один, возможно, более простой вариант с Maven ≥ 2.0.10 - просто иметь source-jars
профиль сверху (по-прежнему activeByDefault
) и до вручную отключите профиль , если хотите, добавив префикс ID к -
или !
после -P
флаг CLI:
$ mvn -P !source-jars
Этот метод не имеет таких же проблем O(n^2)
с несколькими плагинами, но он также менее гибок, поскольку деактивация не может быть вызвана системным свойством, переменной среды, версией JDK и т. Д.