Можно ли загрузить артефакты в хранилище maven-central в Nexus?

Я пытаюсь загрузить артефакты в мой "maven-central" репозиторий в Nexus. Я использую команду:

curl -v --user admin:admin123 --upload-file /path/myjar.jar  http://nexus-nexus3.apps.lab.ca/repository/maven-central/com/tp/mycompany/1.0/myjar.jar

Я получаю ошибку:

User-Agent: curl / 7.54.0 Принять: / Content-Length: 560414 Ожидается: 100-продолжаться HTTP/1.1 400 Неверный путь для хранилища Maven 2 Дата: Пт, 09 марта 2018 15:54:10 GMT Сервер: Nexus/3.9.0-01 (OSS)

Я попробовал несколько команд curl из документов sonatype, но безрезультатно. Мой вопрос, это вообще возможно? Пользовательский интерфейс только дает мне возможность загружать в Maven-релизы и Nuget-hosted. Как мне обойти это?

2 ответа

Я не уверен, действительно ли вы хотите загружать фирменные банки в открытый мир через maven-central.

Распространено указывать и использовать комбинацию maven-central и специфического для компании репозитория, в котором размещаются проприетарные фляги. Вы должны быть осторожны с последствиями этого.

Пришло время загрузки артефакта на maven-central...

Чтобы загрузить ваши артефакты в Central-Maven, здесь есть предварительное условие

Почему у нас есть требования?

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

Некоторые из принятых пунктов:

  1. Поставка Javadoc и источников
  2. Подписывать файлы с помощью GPG/PGP
  3. Название проекта, описание и URL
  4. Информация о лицензии
  5. Информация для разработчиков
  6. Информация СКМ

Завершите пример POM В следующем завершенном примере показаны заголовок XML и необходимые элементы project и modelVersion, а также элементы примера и контент.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.simpligility.training</groupId>
  <artifactId>ossrh-demo</artifactId>
  <version>1.0</version>
  <packaging>jar</packaging>

  <name>ossrh-demo</name>
  <description>A demo for deployment to the Central Repository via OSSRH</description>
  <url>http://github.com/simpligility/ossrh-demo</url>

  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>

  <developers>
    <developer>
      <name>Manfred Moser</name>
      <email>manfred@sonatype.com</email>
      <organization>Sonatype</organization>
      <organizationUrl>http://www.sonatype.com</organizationUrl>
    </developer>
  </developers>

  <scm>
    <connection>scm:git:git://github.com/simpligility/ossrh-demo.git</connection>
    <developerConnection>scm:git:ssh://github.com:simpligility/ossrh-demo.git</developerConnection>
    <url>http://github.com/simpligility/ossrh-demo/tree/master</url>
   </scm>

...

</project>

Я предполагаю, что по умолчанию репозиторий, который вы называете maven-central, является прокси-репозиторием, который отражает Maven Central. И не имеет смысла загружать в хранилище прокси. Вы должны загрузить свои артефакты в другой репозиторий, например, maven-release, который является так называемым размещенным репозиторием...

Вы не можете загружать артефакты в хранилище прокси, которое написано в документации Nexus. Создайте отдельный размещенный репозиторий в Nexus (по умолчанию, например, уже есть некоторые сторонние организации) и загрузите их в этот...

Вы должны обращаться с правильной конфигурацией Nexus, чего вы явно не сделали. У вас есть группа репозиториев, которая объединяет различные репозитории с логическими, которые вы используете для доступа (использования) артефактов.

Для правильного доступа к группе Nexus у вас должны быть настройки, которые выглядят следующим образом. Данный URL-адрес является URL-адресом группы репозиториев, которая настроена в Nexus для использования артефактов.

Дистрибутивное управление в Maven должно быть настроено на использование двух отдельных репозиториев, один из которых - репозиторий релизов, а другой - репозиторий SNAPSHOT.

<settings>
  <mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://localhost:8081/nexus/content/groups/public</url>
    </mirror>
  </mirrors>
  <profiles>
    <profile>
      <id>nexus</id>
      <!--Enable snapshots for the built in central repo to direct -->
      <!--all requests to nexus via the mirror -->
      <repositories>
        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
     <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
</settings>
Другие вопросы по тегам