Skip to content

Publishing By Using the Maven Plugin⚓︎

Publisher Early Access supports publishing via Maven. In order to do this, you need to configure your project to use the central-publishing-maven-plugin.


The plugin does not generate all of the prerequisites for a valid bundle, so you'll want to follow the documentation for building Javadoc and sources .jar files and GPG signature files. There are additional metadata requirements (specifically required elements in your POM) that the plugin will not enforce. Please see our requirements documentation for guidance.

The plugin does generate the required checksums for files that are part of a bundle. See the below Plugin configuration options. By default, all acceptable checksums are generated (MD5, SHA1, SHA256 and SHA512).




It's required to configure your settings.xml with your credentials. By default, this will expect your login credentials. You can get these credentials by generating a user token via the Account page and setting tokenAuth to true in the plugin configuration.

A screenshot of the accounts page that shows the Generate User Token button

      <username><!-- your token username --></username>
      <password><!-- your token password --></password>


Once your build is configured, running mvn deploy will generate a bundle and upload it to the Portal for validation. A successful publish will look similar to the following:

$ mvn deploy
[INFO] Scanning for projects...
[INFO] Inspecting build with total of 1 modules
[INFO] Installing Central Publishing features
[INFO] --- central-publishing-maven-plugin:0.3.0:publish (injected-central-publishing) @ example ---
[INFO] Using Central baseUrl:
[INFO] Using credentials from server id central in settings.xml
[INFO] Using Usertoken auth, with namecode: XXXXXXX
[INFO] Staging 2 files
[INFO] Staging /central/tests/sonatype-central-example/pom.xml
[INFO] Installing /central/tests/sonatype-central-example/pom.xml to /central/tests/sonatype-central-example/target/central-staging/org/sonatype/central/test/example/1.0.0/example-1.0.0.pom
[INFO] Staging /central/tests/sonatype-central-example/target/example-1.0.0.pom.asc
[INFO] Installing /Users/sonatype/workspace/central/tests/sonatype-central-example/target/example-1.0.0.pom.asc to /Users/sonatype/workspace/central/tests/sonatype-central-example/target/central-staging/org/sonatype/central/test/example/1.0.0/example-1.0.0.pom.asc
[INFO] Pre Bundling - deleted /central/tests/sonatype-central-example/target/central-staging/org/sonatype/central/test/example/maven-metadata-central-staging.xml
[INFO] Generate checksums for dir: org/sonatype/central/test/example/1.0.0
[INFO] Going to create /central/tests/sonatype-central-example/target/central-publishing/ by bundling content at /central/tests/sonatype-central-example/target/central-staging
[INFO] Created bundle successfully /central/tests/sonatype-central-example/target/central-staging/
[INFO] Going to upload /central/tests/sonatype-central-example/target/central-publishing/
[INFO] Uploaded bundle successfully, deployment name: Deployment, deploymentId: 9590fb21-a026-4451-9722-a7216b258f4d. Deployment will require manual publishing
[INFO] Waiting until Deployment 9590fb21-a026-4451-9722-a7216b258f4d is validated
[INFO] Deployment 9590fb21-a026-4451-9722-a7216b258f4d has been validated. To finish publishing visit
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  15.000 s
[INFO] Finished at: 2024-01-01T00:00:00-00:00
[INFO] ------------------------------------------------------------------------

Automatic Publishing⚓︎

In the minimal configuration as used above, manual publishing is required. This can be useful when testing how publishing works or if you wish to perform additional manual checks. Though often, especially in CI builds, it's desired to automatically publish after upload and validation. This can be achieved by setting the autoPublish configuration to true.


Wait for Publishing⚓︎

By default, the plugin will block and wait until after it has uploaded a bundle and the publishing server has acknowledged that the bundle was validated. If it's desired to block and wait until after publishing has occurred the waitUntil configuration needs to be set to published. This will require Automatic Publishing.


Plugin configuration options⚓︎


Flag to enable auto publishing of a deployment. Meaning no manual intervention is required, if a deployment is considered valid, to publish it. This can be useful for CI builds

Default: false


The plugin generates checksums for the files to be deployed. The following checksums could be used:

Value Description
all Will generate MD5, SHA1, SHA256 and SHA512 checksums.
none No checksums will be generated by this plugin. This can be usefull if other tooling is used to generate the checksums.

Note: without checksums, validation might fail.
required Only MD5 and SHA1 checksums will be generated.

Default: all


URL that the plugin uploads the bundle to generated by this plugin



Name of the deployment that's used for uploading and deploying on the central url. If using the, this name will be visible on the Deployments page

Default: Deployment


The plugin can exclude, or more specifically, not add components by their artifactId


Indicates if building is allowed to have the plugin fail before uploading and publishing occurs.

Default: true


The plugin can ignore, or more specifically, not add components that have already been published in the past to the bundle that will be uploaded and published.

When working with projects that are using a multi-module setup, and it's desired to publish only new or updated modules (for example parent, child1 and child2 are all published, and it's desired to publish a new version 1.0.1 of child2, but leave child1 and parent unchanged), this configuration will assure that previous published components will not be part of the bundle that will be uploaded and published (which normally would cause a publishing to fail).

Default: false


Name of the directory that the plugin will output the bundle file into

Default: central-publishing


Name of the bundle file that the plugin will output as a result



Deprecated use waitPollingInterval instead

Default: 1000


ID of the server that you configured in your settings.xml

Default: central


For creating only the bundle but skipping uploading and publishing. This is useful for creating a bundle and manually uploading it through

Default: false


Name of the directory the plugin will stage files

Default: central-staging


Flag to indicate whether to use user token authentication, or basic auth.

Default: false


Deprecated use autoPublish in combination with waitUntil instead

Default: false


Maximum amount of seconds to waitUntil a state has been reached. Cannot be less than 1800 seconds.

Default: 1800


Amount of seconds between intervals before checking if a state has been reached. Cannot be less then 5 seconds.

Default: 5


The plugin can wait until certain states have been reached. This can be useful if it's required to run a deployment async. The following states can be waited for:

Value Description
published Wait until the deployment is uploaded, validated and published. Failures from upload, validation or publishing will be in the console result output.
uploaded Wait until the deployment bundle has been uploaded to the central URL. Only upload failures will be reported, any validation failures will have to be checked separately (i.e. on
validated Wait until the deployment bundle has been uploaded and validated. Failures from upload and validation will be in the console result output.

Default: validated