2016-01-21 2 views
1

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

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

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

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

+0

Сколько артефактов такое же создание сборки maven? Это мультимодульный проект? –

+0

Это довольно большой проект, который создает более двух десятков артефактов.Это количество артефактов можно было бы настроить вручную, но если бы появилось больше артефактов, я бы хотел, чтобы они автоматически включались. EDIT: Это многомодульный проект –

ответ

1

Вы можете использовать Checksum Maven Plugin и его цель artifacts.

Я просто проверял следующий пример: 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):

enter image description here

через дополнительный вход individualFiles конфигурации, вы можете также решить, следует ли хранить контрольные суммы в разделенных файлах (по умолчанию) или добавляться в один файл, а через запись конфигурации individualFilesOutputDirectory вы можете перенаправить свое создание в другое место, если это необходимо.

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

Также обратите внимание, в случае мульти-модули проектов, as per documentation:

не наследуются по умолчанию в нескольких проектах сборки.

В таком случае вы можете поместить фрагмент выше в pluginManagement разделе вашего родитель/агрегаторе П и просто повторно объявить плагин (но не его исполнение, ни его версия) в подмодулях, где вы хотите, чтобы активировать поведение.

Таким образом, в вашем родительском/агрегатор вы могли бы иметь что-то вроде:

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

+0

Работает отлично, спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^