Можно ли загрузить артефакты в хранилище 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, здесь есть предварительное условие
Почему у нас есть требования?
Чтобы обеспечить минимальный уровень качества компонентов, доступных в центральном репозитории, мы установили ряд требований, которым должны соответствовать ваши компоненты развертывания. Это позволяет вашим пользователям находить всю необходимую информацию о компонентах из метаданных, представленных в центральном репозитории.
Некоторые из принятых пунктов:
- Поставка Javadoc и источников
- Подписывать файлы с помощью GPG/PGP
- Название проекта, описание и URL
- Информация о лицензии
- Информация для разработчиков
- Информация СКМ
Завершите пример 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>