В родительском POM у меня включена поддержка Nexus (с репозиториями Sonatype в управлении дистрибуцией):
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Я развертываю проекты в Maven Central все время с помощью этого родительского POM.
Однако сегодня у меня есть проект, который использует агрегированное POM, и я хотел развернуть его и его агрегированные проекты , за исключением двух из них в Maven Central. Поэтому я поместил следующее в два дочерних POM-объекта подпроекта, которые я не хочу развернуть:
<properties>
<maven.deploy.skip>true</maven.deploy.skip>
</properties>
Затем (все еще используя версию SNAPSHOT) я попытался развернуть хранилище снимков в качестве теста:
mvn clean deploy
Это ошибка, которую я получил:
[ERROR] Failed to execute goal org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8:deploy (injected-nexus-deploy)
on project foo-bar: Failed to deploy artifacts: Could not transfer artifact com.example:foo-bar:war.asc:0.1.0-…
from/to ossrh (https://oss.sonatype.org/content/repositories/snapshots): Access denied to:
https://oss.sonatype.org/content/repositories/snapshots/com/example/foo-bar/0.1.0-SNAPSHOT/foo-bar-0.1.0-….war.asc -> [Help 1]
Я не понимаю, часть "доступ запрещен". Но главный вопрос заключается в том, почему Nexus пытается развернуть мой foo-bar
проект, для которого я установил maven.deploy.skip
на false
?
Обновление: Кажется, здесь есть несколько взаимосвязанных проблем.
Прежде всего, часть «отказ в доступе» была моей ошибкой: я пренебрег координацией с Sonatype, чтобы добавить новый идентификатор группы с разрешениями на публикацию в Maven Central для этого проекта.
Впоследствии, однако, несмотря на то, что «доступ запрещен», Maven по-прежнему развертывает все проекты, даже те, с maven.deploy.skip
по false
. Кто-то упомянул, что maven.deploy.skip
предназначен для maven-deploy-plugin
, а не nexus-staging-maven-plugin
. Хорошо, тогда оставим два оставшихся вопроса:
- У меня есть другой проект, в котором я установил
maven.deploy.skip
на false
для агрегата POM, но затем установил его обратно на true
для агрегированного дочернего POM. Maven правильно развернул только агрегированный дочерний POM и не развернул агрегированный родительский POM в Maven Central. Так почему же maven.deploy.skip
работает даже для nexus-staging-maven-plugin
, если он отключен для агрегированного родительского POM, но не для агрегированного дочернего POM?
- Хорошо, тогда, если
maven.deploy.skip
не ответ, как do Я отключаю развертывание в Maven Central для совокупного дочернего POM, изменяя совокупное дочернее POM? (Я знаю, что могу удалить дочерний POM из списка агрегатных POM модулей, но это приведет к развертыванию другого агрегатного родительского POM.)