From 7b4b5d1da0fd320405a98a58e0c74cdbfb1d6c78 Mon Sep 17 00:00:00 2001 From: John Wiseman Date: Mon, 6 Jun 2016 20:38:47 -0700 Subject: [PATCH] WIP Publish to Central Repo. OMFG. Based on https://medium.com/android-news/the-complete-guide-to-creating-an-android-library-46628b7fc879 --- build.gradle | 15 +------- gradle.properties | 15 ++++++++ maven-push.gradle | 92 +++++++++++++++++++++++++++++++++++++++++++++++ settings.gradle | 1 + 4 files changed, 109 insertions(+), 14 deletions(-) create mode 100644 gradle.properties create mode 100644 maven-push.gradle create mode 100644 settings.gradle diff --git a/build.gradle b/build.gradle index 48d1b69..d1e4dd9 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ apply plugin: 'checkstyle' apply plugin: 'jacoco' apply plugin: 'com.github.kt3k.coveralls' apply plugin: 'maven' -apply plugin: 'maven-publish' +apply from: 'maven-push.gradle' repositories { mavenCentral() @@ -37,16 +37,3 @@ jacocoTestReport { } check.dependsOn jacocoTestReport - -group = 'com.lemondronor' -version = '1.0.0' - -publishing { - publications { - maven(MavenPublication) { - artifactId 'modesbeast' - - from components.java - } - } -} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..9f62557 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,15 @@ +POM_NAME=modesbeast +POM_ARTIFACT_ID=modesbeast +VERSION_NAME=0.0.1-SNAPSHOT +GROUP=com.lemondronor +POM_DESCRIPTION=A library that does X, Y, and Z +POM_URL=https://github.com/wiseman/ProjectName +POM_SCM_URL=https://github.com/github_username/ProjectName +POM_SCM_CONNECTION=scm:git@github.com:github_username/ProjectName.git +POM_SCM_DEV_CONNECTION=scm:git@github.com:github_username/ProjectName.git +POM_LICENCE_NAME=The Apache Software License, Version 2.0 +POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt +POM_LICENCE_DIST=repo +POM_DEVELOPER_ID=wiseman +POM_DEVELOPER_NAME=John Wiseman +POM_PACKAGING=jar diff --git a/maven-push.gradle b/maven-push.gradle new file mode 100644 index 0000000..0d29b98 --- /dev/null +++ b/maven-push.gradle @@ -0,0 +1,92 @@ +apply plugin: 'maven' +apply plugin: 'signing' + +def isReleaseBuild() { + return VERSION_NAME.contains("SNAPSHOT") == false +} + +def getReleaseRepositoryUrl() { + return hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL + : "https://oss.sonatype.org/service/local/staging/deploy/maven2/" +} + +def getSnapshotRepositoryUrl() { + return hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL + : "https://oss.sonatype.org/content/repositories/snapshots/" +} + +def getRepositoryUsername() { + return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : "" +} + +def getRepositoryPassword() { + return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : "" +} + +afterEvaluate { project -> + uploadArchives { + repositories { + mavenDeployer { + beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } + + pom.groupId = GROUP + pom.artifactId = POM_ARTIFACT_ID + pom.version = VERSION_NAME + + repository(url: getReleaseRepositoryUrl()) { + authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) + } + snapshotRepository(url: getSnapshotRepositoryUrl()) { + authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) + } + + pom.project { + name POM_NAME + packaging POM_PACKAGING + description POM_DESCRIPTION + url POM_URL + + scm { + url POM_SCM_URL + connection POM_SCM_CONNECTION + developerConnection POM_SCM_DEV_CONNECTION + } + + licenses { + license { + name POM_LICENCE_NAME + url POM_LICENCE_URL + distribution POM_LICENCE_DIST + } + } + + developers { + developer { + id POM_DEVELOPER_ID + name POM_DEVELOPER_NAME + } + } + } + } + } + } + + signing { + required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") } + sign configurations.archives + } + + task sourcesJar(type: Jar) { + classifier = 'sources' + from sourceSets.main.allSource + } + + task javadocJar(type: Jar) { + classifier = 'javadoc' + from javadoc + } + + artifacts { + archives javadocJar, sourcesJar + } +} diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..52baf7e --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +include ':sample', ':library'