Создать контрольную сумму для всех артефактов maven
Я пытаюсь создать контрольную сумму SHA-1 для ВСЕХ артефактов, находящихся в настоящее время в моей сборке maven, и записать эти контрольные суммы в файл. В настоящее время я изучаю использование maven-install-plugin, который имеет встроенный генератор контрольных сумм.
https://maven.apache.org/plugins/maven-install-plugin/examples/installing-checksums.html
Проблема в том, что это решение предназначено только для одного артефакта, а не для всех артефактов в моей сборке. Я не могу указать все артефакты во время сборки, мне нужно решение, которое включает в себя все артефакты.
Дополнительная информация: Я использую Jenkins как инструмент для сборки, поэтому, если есть решение Jenkins, я тоже с этим согласен. Я сам не нашел, хотя.
1 ответ
Вы можете использовать Плагин Checksum Maven и его цель артефактов.
Я только что проверил следующий образец POM:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>create-jar-something</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>something</classifier>
</configuration>
</execution>
<execution>
<id>create-jar-else</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>else</classifier>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.ju-n.maven.plugins</groupId>
<artifactId>checksum-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<goals>
<goal>artifacts</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Примечание: я создаю три артефакта из этого проекта: по умолчанию один и два дополнительных банок с классификаторами.
Благодаря простому и простому исполнению artifacts
цель, я получил следующее содержимое как часть сборки (mvn clean verify
):
Через дополнительный individualFiles
В записи конфигурации вы также можете решить, сохранять ли контрольные суммы в отдельных файлах (по умолчанию) или добавлять в один файл, а через individualFilesOutputDirectory
В настройках записи вы можете перенаправить их создание в другое место, если это необходимо.
Следовательно, этот подход может удовлетворить ваши потребности, так как он автоматически обнаружит любой сгенерированный артефакт и вычислит для него контрольную сумму.
Также обратите внимание на мультимодульные проекты, которые согласно документации:
НЕ наследуется по умолчанию в многопроектных сборках.
В таком случае вы можете поместить фрагмент выше в pluginManagement
раздел вашего pom родителя / агрегатора и просто повторно объявите плагин (но не его выполнение или его версию) в подмодулях, где вы хотите активировать поведение.
Следовательно, в вашем родительском / агрегаторе у вас может быть что-то вроде:
<pluginManagement>
<plugins>
<plugin>
<groupId>net.ju-n.maven.plugins</groupId>
<artifactId>checksum-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<goals>
<goal>artifacts</goal>
</goals>
</execution>
</executions>
<configuration>
</configuration>
</plugin>
</plugins>
</pluginManagement>
И в модулях, для которых вы хотите включить это поведение, вы можете указать только:
<build>
<plugins>
<plugin>
<groupId>net.ju-n.maven.plugins</groupId>
<artifactId>checksum-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
И последнее, но не менее важное: если часть CI построена на Jenkins, вы также можете рассмотреть выделенный профиль для этого поведения и активировать его при сборке, но не как часть сборки по умолчанию.