Nexus размещает плагин Maven в сложном проекте Maven?

Я пытаюсь выпустить несколько проектов maven вместе, развертывая их на oss.sonatype.org, а затем выпуская их на центральный сервер Maven.

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

В сборке pom я установил плагин nexus staging:

<plugin>
    <groupId>org.sonatype.plugins</groupId>
    <artifactId>nexus-staging-maven-plugin</artifactId>
    <version>1.6.3</version>
    <extensions>true</extensions>
    <configuration>
      <serverId>ossrh</serverId>
      <nexusUrl>https://oss.sonatype.org/</nexusUrl>
      <autoReleaseAfterClose>true</autoReleaseAfterClose>
    </configuration>
</plugin>

Что происходит при сборке, так это то, что все подмодули создаются и загружаются в нексус в промежуточном репо (скажем, # 4005). Затем, в конце, указанный выше плагин открывает новый репозиторий (скажем, # 4006), загружает в него только сборку pom, а затем закрывает его. Это означает, что будет выпущена моя сборка pom, но не какой-либо из подмодулей.

Есть ли способ явно контролировать жизненный цикл этого плагина? Я хочу открыть новый репозиторий в начале сборки, загрузить в него все субмодули, затем закрыть и выпустить его.


person user2800708    schedule 14.06.2016    source источник
comment
Насколько я понимаю, вы просто можете создать тип pom модуля агрегатора, чтобы собрать все подмодули, а затем выпустить его, выпуская все подмодули, которые у вас есть ... Если они не построены в том же реакторе Maven, они не будут выпущены вместе , в этом случае вы должны выпускать один за другим ... Я говорю не о стороне плагина maven для промежуточной обработки нексуса, а только со стороны структуры выпуска Maven ..   -  person ivoruJavaBoy    schedule 14.06.2016
comment
Вот что у меня есть. Сборочный помпон объединяет несколько других помпов, каждый из которых имеет подмодули. Однако общая помпа сборки не наследуется от подмодулей, ее нужно просто управлять сборкой реактора из них всех вместе.   -  person user2800708    schedule 14.06.2016
comment
Хорошо, понятно, пожалуйста, объясните мне, что вы хотите сделать, что вы имеете в виду под выпуском модулей? вы хотите, чтобы они были выпущены и помечены или просто развернуты, поскольку, насколько я понимаю, промежуточный плагин позволяет вам развертывать артефакты, но не выпускать их, что, если вы просто запустите плагин выпуска на агрегаторе?   -  person ivoruJavaBoy    schedule 14.06.2016
comment
Развернут в промежуточном репо в oss.sonatype. Затем запустите проверки и, если они пройдут, отпустите в maven central. Это то, для чего предназначен плагин nexus; это позволяет вам скрипт закрыть / проверить / освободить центральную часть. Извините, я не упомянул, что пытался выпустить в maven central - я добавлю это к вопросу.   -  person user2800708    schedule 14.06.2016


Ответы (1)


Если сборка pom НЕ является родительской, то разные многомодульные проекты НЕ имеют конфигурации промежуточного плагина. Так они просто развертываются через плагин развертывания? Это будет смешанный вариант использования, который не работает.

Вам нужно будет настроить свои проекты Maven так, чтобы все они работали в одном реакторе и все развертывались с помощью промежуточного плагина.

Единственный другой вариант, который я могу придумать, - это запустить полную сборку всех многомодульных потомков как обычное развертывание в одном или нескольких промежуточных репозиториях, а затем выпустить их вместе с цели удаленного управления промежуточного плагина. Это, вероятно, потребует написания сценария или хотя бы некоторого тестирования того, как все работает.

person Manfred Moser    schedule 14.06.2016
comment
Я попробую добавить промежуточный плагин в каждый из многомодульных проектов и посмотрю, что произойдет - возможно, каждый окажется в своем собственном промежуточном репозитории? На самом деле это может быть не так уж плохо. - person user2800708; 15.06.2016