From 4ffa75fc1cc68f4c875111bccb2098bf7a0c3cce Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Sat, 28 Feb 2015 16:38:22 -0800 Subject: [PATCH] Add signing configurations. --- android/build.gradle | 70 ++++++++++++++++++++++++++++++---- build.gradle | 4 +- java/build.gradle | 91 +++++++++++++++++++++++++++++++++++--------- 3 files changed, 138 insertions(+), 27 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index f6ade44575..f4c5b335d1 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -10,6 +10,11 @@ buildscript { apply plugin: 'com.android.library' apply plugin: 'maven' +apply plugin: 'signing' + +archivesBaseName = "textsecure-android" +version = version_number +group = group_info repositories { mavenCentral() @@ -17,7 +22,7 @@ repositories { } dependencies { - compile 'org.whispersystems:axolotl-android:1.1.1' + compile "org.whispersystems:axolotl-android:${axolotl_version}" compile (project(':java')) { exclude group: 'org.whispersystems', module: 'axolotl-java' exclude group: 'org.apache.httpcomponents', module: 'httpclient' @@ -32,6 +37,17 @@ android { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } + + libraryVariants.all { variant -> + variant.outputs.each { output -> + def outputFile = output.outputFile + if (outputFile != null && outputFile.name.endsWith('.aar')) { + def fileName = "${archivesBaseName}-${version}.aar" + output.outputFile = new File(outputFile.parent, fileName) + } + } + } + } tasks.whenTaskAdded { task -> @@ -40,15 +56,55 @@ tasks.whenTaskAdded { task -> } } -version '0.1' -group 'org.whispersystems.textsecure' -archivesBaseName = 'libtextsecure' +signing { + required { has("release") && gradle.taskGraph.hasTask("uploadArchives") } + sign configurations.archives +} uploadArchives { - repositories { - mavenDeployer { - repository(url: mavenLocal().getUrl()) + configuration = configurations.archives + repositories.mavenDeployer { + beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } + + repository(url: sonatypeRepo) { + authentication(userName: whisperSonatypeUsername, password: whisperSonatypePassword) + } + + pom.project { + name 'textsecure-android' + packaging 'aar' + description 'TextSecure library for Android' + url 'https://github.com/WhisperSystems/libtextsecure-java' + + scm { + url 'scm:git@github.com:WhisperSystems/libtextsecure-java.git' + connection 'scm:git@github.com:WhisperSystems/libtextsecure-java.git' + developerConnection 'scm:git@github.com:WhisperSystems/libtextsecure-java.git' + } + + licenses { + license { + name 'GPLv3' + url 'https://www.gnu.org/licenses/gpl-3.0.txt' + distribution 'repo' + } + } + + developers { + developer { + name 'Moxie Marlinspike' + } + } } } } +task installArchives(type: Upload) { + description "Installs the artifacts to the local Maven repository." + configuration = configurations['archives'] + repositories { + mavenDeployer { + repository url: "file://${System.properties['user.home']}/.m2/repository" + } + } +} diff --git a/build.gradle b/build.gradle index bb0cd956f1..b72c434471 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ subprojects { - ext.version_number = "1.0.0" + ext.version_number = "1.0.0-RC1" ext.group_info = "org.whispersystems" - ext.axolotl_version = "1.1.1" + ext.axolotl_version = "1.2.1" if (JavaVersion.current().isJava8Compatible()) { allprojects { diff --git a/java/build.gradle b/java/build.gradle index 532dfea6ac..db9ae138b1 100644 --- a/java/build.gradle +++ b/java/build.gradle @@ -1,18 +1,15 @@ -buildscript { - repositories { - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:1.1.0' - } -} - apply plugin: 'java' apply plugin: 'maven' +apply plugin: 'signing' + +sourceCompatibility = 1.7 +archivesBaseName = "textsecure-java" +version = version_number +group = group_info repositories { mavenCentral() + mavenLocal() } dependencies { @@ -20,28 +17,86 @@ dependencies { compile 'com.googlecode.libphonenumber:libphonenumber:6.1' compile 'com.fasterxml.jackson.core:jackson-databind:2.5.0' - compile 'org.whispersystems:axolotl-java:1.1.1' + compile "org.whispersystems:axolotl-java:${axolotl_version}" compile 'com.squareup.okhttp:okhttp:2.2.0' compile 'org.apache.httpcomponents:httpclient:4.4' testCompile 'junit:junit:3.8.2' } - tasks.whenTaskAdded { task -> if (task.name.equals("lint")) { task.enabled = false } } -version '0.1' -group 'org.whispersystems.textsecure' -archivesBaseName = 'libtextsecure' +signing { + required { has("release") && gradle.taskGraph.hasTask("uploadArchives") } + sign configurations.archives +} uploadArchives { - repositories { - mavenDeployer { - repository(url: mavenLocal().getUrl()) + configuration = configurations.archives + repositories.mavenDeployer { + beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } + + repository(url: sonatypeRepo) { + authentication(userName: whisperSonatypeUsername, password: whisperSonatypePassword) + } + + pom.project { + name 'textscure-java' + packaging 'jar' + description 'TetSecure library for Java' + url 'https://github.com/WhisperSystems/libtextsecure-java' + + scm { + url 'scm:git@github.com:WhisperSystems/libtextsecure-java.git' + connection 'scm:git@github.com:WhisperSystems/libtextsecure-java.git' + developerConnection 'scm:git@github.com:WhisperSystems/libtextsecure-java.git' + } + + licenses { + license { + name 'GPLv3' + url 'https://www.gnu.org/licenses/gpl-3.0.txt' + distribution 'repo' + } + } + + developers { + developer { + name 'Moxie Marlinspike' + } + } } } } + +task installArchives(type: Upload) { + description "Installs the artifacts to the local Maven repository." + configuration = configurations['archives'] + repositories { + mavenDeployer { + repository url: "file://${System.properties['user.home']}/.m2/repository" + } + } +} + +task packageJavadoc(type: Jar, dependsOn: 'javadoc') { + from javadoc.destinationDir + classifier = 'javadoc' +} + +task packageSources(type: Jar) { + from sourceSets.main.allSource + classifier = 'sources' +} + +artifacts { + archives(packageJavadoc) { + type = 'javadoc' + } + + archives packageSources +}