Как загрузить артефакт Maven в пакеты Github с помощью командной строки?

Я пытаюсь загрузить артефакт Maven, который я не создал, в реестр пакетов GitHub моей организации. Для этого я использую плагин Maven deploy: deploy-file. Вот команда, которую я использовал:

mvn deploy:deploy-file 
-Dfile=[THE JAR FILE]
-Durl=https://maven.pkg.github.com/[ORG] 
-Dregistry=https://maven.pkg.github.com/[ORG] 
-DgroupId=[GID]
-DartifactId=[ARTIFACTID] 
-Dversion=[VERSION]
-DgeneratePom=false 
-Dtoken=[MY GITHUB TOKEN]

В результате я получаю 401 ошибку от Github. Я убедился, что:

  • У меня достаточно разрешений внутри моей организации (в настоящее время владелец).
  • Токен, который я использую, действителен и имеет соответствующие области действия: я тестирую их все.

Также на странице пакета github указано:

<!-- Just a single step: Deploy using a GitHub token -->
$ mvn deploy -Dregistry=https://maven.pkg.github.com/[org] -Dtoken=GH_TOKEN

Почему я не могу найти в документации Maven информацию о параметрах реестра или токена? Могу ли я загрузить этот файл в реестр организации без какого-либо файла конфигурации XML, используя только cli?

Заранее спасибо.

3 ответа

Мне это удалось:

mvn deploy:deploy-file -Dfile=./[JAR].jar 
    -DpomFile=./pom.xml 
    -DrepositoryId=github 
    -Durl=https://maven.pkg.github.com/[OWNER]/[REPO] 
    -Dtoken=GH_TOKEN

И файл settings.xml в моем домашнем каталоге maven:

<settings>
    <servers>
        <server>
        <id>github</id>
            <username>[GITHUB USERNAME]</username>
            <password>[GENERATED ACCESS TOKEN]</password>
        </server>
    </servers>
</settings>

И внутри моего ПОМ:

...
<distributionManagement>
    <repository>
        <id>github</id>
        <name>GitHub Packages</name>
        <url>https://maven.pkg.github.com/[OWNER]/[REPO]</url>
    </repository>
</distributionManagement>
...

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

URL-адрес также должен иметь имя репозитория.

В одном из моих проектов это есть в pom.xml

<distributionManagement>
    <repository>
        <id>github</id>
        <url>https://maven.pkg.github.com/stirante/lol-client-java-api</url>
    </repository>
</distributionManagement>
Другие вопросы по тегам