Automated release to Maven Central with Gradle

gradle, maven, nexus

Solution

I've used the nexus-workflow gradle plugin to automate the releasing of repositories.

I put this at the top of the `build.gradle` of my project I want to release:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.adaptc.gradle:nexus-workflow:0.6'
    }
}
apply plugin: 'nexus-workflow'

Additionally I put these three properties in `~/.gradle/gradle.properties`

oss-releases.username=mySonatypeUsername
oss-releases.password=mySonatypePassword
oss-releases.url=https://oss.sonatype.org/index.html#stagingRepositories

When I want to push a release to Maven Central, I first upload the jars to Nexus using `gradle uploadArchives` and then I do `gradle nexusStagingRelease`. This closes and releases all my open repos on Nexus.

Edit: I also found this plugin by Benjamin Muschko which seems to be an alternative to the plugin described above. I didn't try it yet, though.

Problem

I'd like to upload my jar to the Maven Central repository using `gradle uploadArchives` and use it in other projects as a dependency. I've followed this nice tutorial with the result that my jars are uploaded to Sonatype Nexus (see screenshot below). The 0.1 version of my jar is available; the line `dependencies {compile 'eu.matthiasbraun:Utils:0.1'}` works just fine in the `build.gradle` file of my dependent project. I released the 0.1 version by clicking the Close and the Release buttons seen in the screenshot. After that I commented on the Jira ticket I had created here and was told that central sync would run every two hours. It was my understanding that if I now wanted to release the 0.2 version of my jar, I simply would do `gradle uploadArchives` and change the line in build.gradle` of my dependent project to `dependencies {compile 'eu.matthiasbraun:Utils:0.2'}`. Yet, when I `gradle build` my dependent project (after two hours) I got the error that the dependency could not be resolved. Here's my complete `build.gradle` which uploads my jar to Sonatype Nexus: link. How can I automate the release of jars to Maven Central using Gradle?

Original source