Прикрепление номера сборки для бинарных файлов в Maven - PullRequest
1 голос
/ 22 октября 2011

Я запускаю сборку maven и сохраняю файлы в Artifactory. Одна проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь использовать версию -snapshot, она перезаписывает двоичный файл в Artifactory. Я пытался использовать плагин номер сборки Maven, но столкнулся с проблемами. Я ссылался на это http://blog.codehangover.com/track-every-build-number-with-maven/

Описать ниже Что я сделал?

  1. Обновлен файл masterpom.xml со следующей строкой.

             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>buildnumber-maven-plugin</artifactId>
                 <version>1.0-beta-3</version>
                 <executions>
                       <execution>
                       <phase>validate</phase>
                       <goals>
                           <goal>create</goal>
                        </goals>
                       </execution>
                 </executions>
                       <configuration>
                            <doCheck>false</doCheck>
                            <doUpdate>false</doUpdate>
                            <format>${version}.{0,number}</format>
                            <items>
                               <item>buildNumber</item>
                            </items>
                       </configuration>
            </plugin>
    
  2. Теперь я обновляю pom of ear и webproject, как показано ниже

                     <build>
                       <finalName>${project.artifactId}-${project.version}.${buildNumber}</finalName>
                     </build>
    

Когда я запускал mvn clean install, генерировалось ухо и война, но когда я проверил войну внутри уха, я обнаружил, что это нечто вроде war-1.0-SNAPSHOT-null.war. Я считаю, что война и слух не могли получить параметр buildNumber. Я смог успешно сгенерировать файлы buildNUmber.property и смог увеличить число, запустив плагин buildnumber: create. Вот мои вопросы

  1. Что я делаю здесь неправильно и почему не выбран параметр buildNumber.
  2. Также я хочу сгенерировать все двоичные файлы, включая файлы jar, в следующем формате binary-version-Snapshot. $ {BuildNumber}. Так нужно ли мне обновлять pom каждого файла или каким-либо другим способом обновлять это?
  3. Также мы используем сборки Hudson для непрерывной интеграции, и мы хотим разделить сборки разработчиков по номеру сборки Hudson. Как этого добиться, если мы не хотим проверять buildNumber.properties после сборки Hudson.

1 Ответ

1 голос
/ 28 октября 2011

Чтобы получить уникальные снимки, используйте флаг uniqueVersion (см. Блог Джеймса Лоренцена ).Если вы используете maven цель deploy: deploy-file, флаг uniqueVersion по умолчанию имеет значение true.У меня в компании действует следующая политика.Только «официальные» снимки попадают в хранилище.«Официальный» снимок - это тот, который был построен на нашей справочной системе (нашем сервере Jenkins ci).Нам не нужна уникальная функция для снимков, так как мы позволяем Дженкинсу архивировать артефакты.Таким образом, мы всегда можем вернуться к определенной версии, если захотим, используя Jenkins.Если сборка не работает, снимок не будет развернут в репозитории.

На ваш второй вопрос;Насколько я понимаю, вам нужно обновить каждый файл POM.Но так как это одноразовое изменение, оно не должно быть слишком обременительным.

Я не совсем понимаю ваш третий вопрос («... отдельные разработчики собирают с номером сборки Hudson Build ...»).Если вы хотите добавить номер сборки для каждой сборки, выполненной Hudson, у вас есть несколько вариантов:

  1. Вы можете добавить строку в качестве классификатора при развертывании.Maven добавит этот классификатор в имя файла (artifactID-version-classifier.jar - например, my.company.calendar-0.0.1-Snapshot-Hudson.jar).Артефакт будет получен путем добавления классификатора к зависимости.

  2. добавить еще один параметр к вашему вызову maven - outputfilename ($ {project.build.finalName}, см. maven document )

  3. изменение строки версии на что-то вроде

...