GitHub action to build a Java Maven library and publish it to GitHub Packages and Maven Central.
- Your project need to use Maven
- Create an account on Sonatype
- Create a JIRA ticket on Sonatype to approve your groupId (io.github.YOUR-GITHUB-USERNAME)
- Generate a gpg key and distribute the public key to a keyserver
Create your GitHub secrets on your repository:
- NEXUS_USERNAME with your username used on Sonatype
- NEXUS_PASSWORD with your password used on Sonatype
- GPG_PRIVATE_KEY with the private key of your generated pgp key
- to get the private key
gpg --armor --export-secret-key <key-id> > privkey.asc
- to get the private key
- GPG_PASSPHRASE with the passphrase of your gpg key
Inside your pom.xml file you need to set:
- the good groupId (io.github.YOUR-GITHUB-USERNAME)
- a description
- a license
- the developers
- issueManagement
- scm
- the ossrhDeploy profile
- the githubDeploy profile
For more details you can look pom-example.xml
The workflow, usually declared in .github/workflows/library-publish.yml
, looks like:
name: Java library publisher
on:
release:
types: [created]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Maven Library build and publish
uses: MathieuSoysal/[email protected]
with:
nexus-username: ${{ secrets.NEXUS_USERNAME }}
nexus-password: ${{ secrets.NEXUS_PASSWORD }}
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: ${{ secrets.GPG_PASSPHRASE }}
github-token: ${{ secrets.GITHUB_TOKEN }}
java-version: 17
Don't forget to add your own MavenCentral badges to your readme 😉:
- to get your maven-central badge : https://shields.io/category/platform-support
The Dockerfile and associated scripts and documentation in this project are released under the Apache 2.0 License.