Почему постановка Nexus игнорирует флаг развертывания Maven? - PullRequest
0 голосов
/ 14 мая 2019

В родительском 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.)

1 Ответ

0 голосов
/ 14 мая 2019

Но больший вопрос в том, почему Nexus пытается развернуть мой проект foo-bar, для которого я установил maven.deploy.skip в false?

Поскольку вы говорите, что не хотите пропускать, в документации говорится, что по умолчанию установлено значение false, поэтому установка его на это ничего не меняет по умолчанию.

...