Создайте контрольную сумму для всех артефактов maven

Я пытаюсь создать контрольную сумму SHA-1 для ВСЕХ артефактов, которые в настоящее время находятся в моей сборке maven, и записать эти контрольные суммы в файл. В настоящее время я изучаю использование плагина maven-install, который имеет встроенный генератор контрольных сумм.

https://maven.apache.org/plugins/maven-install-plugin/examples/installing-checksums.html

Проблема в том, что это решение предназначено только для одного артефакта, а не для всех артефактов в моей сборке. Я также не могу указать все артефакты во время сборки, мне нужно решение, включающее все артефакты.

Дополнительная информация: я использую Jenkins в качестве инструмента сборки, поэтому, если есть решение Jenkins, меня это тоже устроит. Хотя я сам не нашел.


person John Marshall    schedule 21.01.2016    source источник
comment
сколько артефактов создает одна и та же сборка maven? Это многомодульный проект?   -  person A_Di-Matteo    schedule 22.01.2016
comment
Это довольно большой проект, который создает более двух десятков артефактов. Это количество артефактов можно настроить вручную, но если будет создано больше артефактов, я бы хотел, чтобы они были включены автоматически. РЕДАКТИРОВАТЬ: это многомодульный проект   -  person John Marshall    schedule 22.01.2016


Ответы (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>

Примечание. Я создаю три артефакта из этого проекта: один по умолчанию и два дополнительных jar с классификаторами.
Благодаря простому и единственному выполнению цели 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, вы также можете рассмотреть выделенный профиль для этого поведения и активировать его в сборке, но не как часть сборки по умолчанию.

person A_Di-Matteo    schedule 21.01.2016