Ниже возможный подход, который, как вы всегда могли имитировать if
заявление в сборке Maven:
- Используйте
buid-helper-maven-plugin
и его regex-property
цель разобрать по умолчанию ${project.version} property and create a new
$ с {только .when.is.snapshot.used} со значением true
или ${project.version}
в случае наличия SNAPSHOT
суффикса.
- Настройка
maven-source-plugin
для выполнения своей jar
цели специальной конфигурации, используя его skipSource
опцию и передавая ему новый (динамический) ${only.when.is.snapshot.used} property: in case of snapshot it will have value
истинный hence skip the execution, otherwise will have value ${project.version} which will be used as
false` и, следовательно, не пропустить выполнение
- Настройка так же, как выше для
maven-javadoc-plugin
используя его skip
вариант
образец подхода выше, будет:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.10</version>
<executions>
<execution>
<!-- sets the only.when.is.snapshot.used property to true if SNAPSHOT was used,
to the project version otherwise -->
<id>build-helper-regex-is-snapshot-used</id>
<phase>validate</phase>
<goals>
<goal>regex-property</goal>
</goals>
<configuration>
<name>only.when.is.snapshot.used</name>
<value>${project.version}</value>
<regex>.*-SNAPSHOT</regex>
<replacement>true</replacement>
<failIfNoMatch>false</failIfNoMatch>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>create-sources</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<!-- skip when version is SNAPSHOT -->
<skipSource>${only.when.is.snapshot.used}</skipSource>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.4</version>
<executions>
<execution>
<id>create-javadoc</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<!-- skip when version is SNAPSHOT -->
<skip>${only.when.is.snapshot.used}</skip>
</configuration>
</execution>
</executions>
</plugin>
То есть, нет необходимости в профилях, эта конфигурация будет включена только тогда, когда будет использоваться версия без SNAPSHOT, динамически и без какой-либо дополнительной настройки (параметры командной строки или что-то еще).
В качестве побочного напоминания, вы можете также посмотреть на maven-release-plugin
, который будет эффективно ссылаться на источник и JavaDoc плагин только тогда, когда performing релиз без добавления (незначительные) сложности выше подхода.
В противном случае, вы могли бы просто использовать профиль по умолчанию идет от Maven Super POM, который будет на самом деле ссылаться на один и тот же, источник и JavaDoc плагин, и может быть активирована с помощью набора свойств performRelease
дорожить true
. То есть, в любом проекте Maven вы могли бы вызвать следующее:
mvn clean package -DperformRelease=true
или
mvn clean package -Prelease-profile
И вы будете автоматически извлечь выгоду из по умолчанию супер профиля и имеют источники и JavaDoc банки сгенерированные, хотя этот подход должен будет использоваться как последний вариант, поскольку профиль может быть удален из супер-пом в будущих выпусках.
следующие дополнительные шаги относительно плагинов, имеющих опцию «skip»? –
К дополнительным шагам относятся maven-source-plugin и maven-javadoc-plugin. – conteit86