archer64
archer64

Reputation: 141

How do you upload a Maven artifact to Github Packages using the command line?

I am trying to upload a Maven artifact I haven't built to my Organization's GitHub package registry. I am using the deploy:deploy-file Maven plugin in order to do so. Here is the command I have been using:

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]

As a result I am receiving 401 errors from Github. I have made sure that:

Also, the github package page states:

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

Why can't I find any information in Maven documentation about registry or token parameters? Can I upload this file to the organization's registry without any kind of XML configuration file, using only the cli?

Thanks in advance.

Upvotes: 14

Views: 7133

Answers (3)

Danny Varod
Danny Varod

Reputation: 18118

To workaround the repo issue - since I didn't want each package to be published to a different repo, I created a repo named packages and published the packages from all the other repos to it, using the same config as in the other two answers.

Upvotes: 1

AaronHolland
AaronHolland

Reputation: 1685

I had success with this:

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

And a settings.xml in my maven home directory:

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

And inside my POM:

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

Upvotes: 5

stirante
stirante

Reputation: 128

Url should have a repository name as well.

In one of my projects I have this in pom.xml

<distributionManagement>
    <repository>
        <id>github</id>
        <url>https://maven.pkg.github.com/stirante/lol-client-java-api</url>
    </repository>
</distributionManagement>

Upvotes: 0

Related Questions