Sonatype Central (Plugin Moved to Scalalib)
This plugin allows users to publish open-source packages to Maven Central via the Sonatype Central portal.
Quickstart
Add the following to your build.mill:
//| mvnDeps: ["com.lihaoyi::mill-contrib-sonatypecentral:$MILL_VERSION"]
package build
import mill.contrib.sonatypecentral.SonatypeCentralPublishModule
object mymodule extends SonatypeCentralPublishModule {
...
}
Then run the following to publish the individual module:
$ mill mymodule.publishSonatypeCentral
To publish several modules at once, run the following, with arguments adjusted for your use case:
$ mill -i \ mill.contrib.sonatypecentral/publishAll \ --username myusername \ --password mypassword \ --gpgArgs --passphrase=$MILL_PGP_PASSPHRASE,--no-tty,--pinentry-mode,loopback,--batch,--yes,--armor,--detach-sign \ --publishArtifacts __.publishArtifacts \ --readTimeout 36000 \ --awaitTimeout 36000 \ --connectTimeout 36000 \ --shouldRelease false \ --bundleName com.lihaoyi-requests:1.0.0
Module Settings
Below are the default publishing settings on the module level, which can be explicitly configured by users like so:
object mymodule extends SonatypeCentralPublishModule {
override def sonatypeCentralGpgArgs: T[String] = "--batch, --yes, -a, -b"
override def sonatypeCentralConnectTimeout: T[Int] = 5000
override def sonatypeCentralReadTimeout: T[Int] = 60000
override def sonatypeCentralAwaitTimeout: T[Int] = 120 * 1000
override def sonatypeCentralShouldRelease: T[Boolean] = true
...
}
Argument Reference
publishAll
The mill.contrib.sonatypecentral/publishAll method takes the following arguments:
username: The username for calling the Sonatype Central publishing api. Defaults to the SONATYPE_USERNAME environment variable if unset. If neither the parameter nor the environment variable are set, an error will be thrown.
password: The password for calling the Sonatype Central publishing api. Defaults to the SONATYPE_PASSWORD environment variable if unset. If neither the parameter nor the environment variable are set, an error will be thrown.
gpgArgs: Arguments to pass to the gpg package for signing artifacts. Uses the MILL_PGP_PASSPHRASE environment variable if set. Default: [--passphrase=$MILL_PGP_PASSPHRASE], --no-tty, --pinentry-mode, loopback, --batch, --yes, --armor, --detach-sign.
publishArtifacts: The command for generating all publishable artifacts (ex. __.publishArtifacts). Required.
readTimeout: The timeout for receiving a response from Sonatype Central after the initial connection has occurred. Default: 60000.
awaitTimeout: The overall timeout for all retries (including exponential backoff) of the bundle upload. Default: 120 * 1000.
connectTimeout: The timeout for the initial connection to Sonatype Central if there is no response. Default: 5000.
shouldRelease: Whether the bundle should be automatically released when uploaded to Sonatype Central. If false, the bundle will still be uploaded, but users will need to manually log in to Sonatype Central and publish the bundle from the portal. Default: true
bundleName: If set, all packages will be uploaded in a single bundle with the given name. If unset, packages will be uploaded separately. Recommended bundle name syntax: groupName-artifactId-versionNumber. As an example, if publishing the com.lihaoyi requests package, without the bundle name, four different bundles will be uploaded, one for each scala version supported. With a bundle name of com.lihaoyi-requests-<new_version>, a single bundle will be uploaded that contains all packages across scala versions. It is recommended to set the bundle name, so that packages can be verified and deployed together. Default: No bundle name is set and packages will be uploaded separately