Как пропустить выпуск или определенные модули в maven repo
Heyho,
У меня есть проект maven с этой структурой:
Родитель:
- Элемент списка
- API-модуль
- module2
- ...
- module5
- тест
- распределение/сборка
Итак, сначала я запускаю родительский модуль, затем запускаю модуль, который строит api, затем модули, которые зависят от api, а затем тестовый модуль, который содержит инструменты для тестирования, а в конце я запускаю сборку/распространение, где Я упаковываю некоторые модули в архив.
Из-за некоторых проблем я не могу изменить способ, и он работает до сих пор идеально.
С jenkins я отсылаю его в maven repo, но я хочу только выпустить, например API, и несколько модулей, а не тестовый модуль и модуль распространения.
Есть ли способ пропустить их?
Не хочу выпускать материал, который мне действительно не нужен:/
Ответы
Ответ 1
Чтобы понять вас правильно, вы все равно хотите запустить тестовые модули, но не хотите их разворачивать и выпускать. maven-deploy-plugin на помощь! Артефакт все равно будет построен, но не развернут.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.7</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
Тем не менее, плагин release jenkins все равно выпустит все артефакты. Вместо использования плагина release jenkins подумайте о выпуске maven-release-plugin, что легко сделать:
mvn release:prepare
mvn release:perform
Поскольку цели по умолчанию являются deploy
и site
, все должно быть в порядке.
Просто убедитесь, что в корневой папке есть тэг scm
:
<scm>
<connection>scm:svn|git:https://...</connection>
<developerConnection>scm:svn|git:https://...</developerConnection>
</scm>
и что ваша команда управления версиями (git, svn,...) доступна на PATH.
Ответ 2
Вы можете добавить параметр командной строки maven, чтобы указать модули, которые будут созданы в jenkins.
-pl,--projects <arg> Comma-delimited list of specified
reactor projects to build instead
of all projects. A project can be
specified by [groupId]:artifactId
or by its relative path.
Ответ 3
Цель проектов агрегаторов - объединить требования к зданию для простых проектов. Если ваши базовые проекты имеют разные требования к зданию, подумайте о добавлении нового проекта агрегатора.
Отключите развертывание в вашем репозитории Maven в текущем проекте агрегатора и создайте новый проект агрегатора, содержащий только модули, которые вы хотите развернуть.
Добавьте этот новый проект в Jenkins, сделайте его зависеть от вашего оригинального проекта и настройте его для развертывания в вашем репозитории.
Ответ 4
Если ваша цель состоит в том, чтобы пропустить уже существующие артефакты, вместо того, чтобы потерпеть неудачу, обратитесь к другому вопросу:
maven только изменил артефакты
и execially на Artifact Exists Maven Plugin (https://github.com/chonton/exists-maven-plugin).