From b3cccb7a85211d6c0c3664afb5457d704e5708a8 Mon Sep 17 00:00:00 2001 From: Victor Häggqvist Date: Thu, 26 Jul 2018 21:30:57 +0200 Subject: update gradle and android plugin --- RELEASING.md | 14 ++ aboutit-meta/build.gradle | 70 +------ aboutit-meta/gradle.properties | 4 + aboutit-sample/build.gradle | 14 +- .../com/snilius/aboutit/sample/AboutActivity.java | 5 +- .../com/snilius/aboutit/sample/MainActivity.java | 6 +- aboutit/build.gradle | 94 +-------- aboutit/gradle.properties | 4 + build.gradle | 8 +- gradle.properties | 18 +- gradle/gradle-mvn-push.gradle | 218 +++++++++++++++++++++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54333 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- 13 files changed, 283 insertions(+), 174 deletions(-) create mode 100644 RELEASING.md create mode 100644 aboutit-meta/gradle.properties create mode 100644 aboutit/gradle.properties create mode 100644 gradle/gradle-mvn-push.gradle create mode 100644 gradle/wrapper/gradle-wrapper.jar diff --git a/RELEASING.md b/RELEASING.md new file mode 100644 index 0000000..fa19536 --- /dev/null +++ b/RELEASING.md @@ -0,0 +1,14 @@ +# Releasing + + 1. Change the version in `gradle.properties` to a non-SNAPSHOT version. + 3. Update the `README.md` with the new version. + 4. `git commit -am "Prepare for release X.Y.Z."` (where X.Y.Z is the new version) + 5. `./gradlew clean uploadArchives`. + 6. Visit [Sonatype Nexus](https://oss.sonatype.org/) and promote the artifact. + 7. `git tag -a X.Y.X -m "Version X.Y.Z"` (where X.Y.Z is the new version) + 8. Update the `gradle.properties` to the next SNAPSHOT version. + 9. `git commit -am "Prepare next development version."` + 10. `git push && git push --tags` + 11. Update the two sample modules to point to the newly released version. + +If step 5 or 6 fails, drop the Sonatype repo, fix the problem, commit, and start again at step 5. \ No newline at end of file diff --git a/aboutit-meta/build.gradle b/aboutit-meta/build.gradle index bb5b23c..a8aab23 100644 --- a/aboutit-meta/build.gradle +++ b/aboutit-meta/build.gradle @@ -1,21 +1,13 @@ apply plugin: 'com.android.library' -apply plugin: 'maven' -apply plugin: 'signing' -apply plugin: 'nexus-workflow' - -group = "com.snilius.aboutit" -archivesBaseName = "aboutit-meta" -version = "1.0.0" android { - compileSdkVersion 23 - buildToolsVersion "23.0.1" + compileSdkVersion 27 + buildToolsVersion "27.0.03" defaultConfig { minSdkVersion 14 - targetSdkVersion 23 + targetSdkVersion 27 versionCode 1 - versionName version } buildTypes { release { @@ -26,57 +18,7 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:23.0.1' - compile project(':aboutit') -} - - -signing { - sign configurations.archives + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'com.android.support:appcompat-v7:27.1.1' + implementation project(':aboutit') } - -uploadArchives { - repositories { - mavenDeployer { - beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } - - repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { - authentication(userName: ossrhUsername, password: ossrhPassword) - } - - snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { - authentication(userName: ossrhUsername, password: ossrhPassword) - } - - pom.project { - name 'AboutIt Meta' - packaging 'jar' - // optionally artifactId can be defined here - description 'Library presets for AboutIt' - url 'https://github.com/victorhaggqvist/AboutIt' - - scm { - connection 'scm:git:https://github.com/victorhaggqvist/AboutIt.git' - developerConnection 'scm:git:https://github.com/victorhaggqvist/AboutIt.git' - url 'https://github.com/victorhaggqvist/AboutIt' - } - - licenses { - license { - name 'The Apache License, Version 2.0' - url 'http://www.apache.org/licenses/LICENSE-2.0.txt' - } - } - - developers { - developer { - id 'atriix' - name 'Victor Häggqvist' - email 'victor@snilius.com' - } - } - } - } - } -} \ No newline at end of file diff --git a/aboutit-meta/gradle.properties b/aboutit-meta/gradle.properties new file mode 100644 index 0000000..8bba6d2 --- /dev/null +++ b/aboutit-meta/gradle.properties @@ -0,0 +1,4 @@ +POM_ARTIFACT_ID=aboutit-meta +POM_NAME=AboutIt Meta +POM_PACKAGING=aar +VERSION_NAME=1.0.0-SNAPSHOT \ No newline at end of file diff --git a/aboutit-sample/build.gradle b/aboutit-sample/build.gradle index d5ab9e5..6980597 100644 --- a/aboutit-sample/build.gradle +++ b/aboutit-sample/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 23 - buildToolsVersion "23.0.1" + compileSdkVersion 27 + buildToolsVersion "27.0.03" defaultConfig { applicationId "com.snilius.aboutit.sample" minSdkVersion 14 - targetSdkVersion 23 + targetSdkVersion 27 versionCode 3 versionName "1.0.2" } @@ -20,8 +20,8 @@ android { } dependencies { - compile fileTree(include: ['*.jar'], dir: 'libs') - compile 'com.android.support:appcompat-v7:23.0.1' - compile project(':aboutit') - compile project(':aboutit-meta') + implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation 'com.android.support:appcompat-v7:27.1.1' + implementation project(':aboutit') + implementation project(':aboutit-meta') } diff --git a/aboutit-sample/src/main/java/com/snilius/aboutit/sample/AboutActivity.java b/aboutit-sample/src/main/java/com/snilius/aboutit/sample/AboutActivity.java index 94b7c66..0520b50 100644 --- a/aboutit-sample/src/main/java/com/snilius/aboutit/sample/AboutActivity.java +++ b/aboutit-sample/src/main/java/com/snilius/aboutit/sample/AboutActivity.java @@ -1,11 +1,8 @@ package com.snilius.aboutit.sample; -import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; -import android.view.Menu; -import android.view.MenuItem; import com.snilius.aboutit.AboutIt; import com.snilius.aboutit.L; @@ -18,7 +15,7 @@ public class AboutActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setTitle(R.string.about); diff --git a/aboutit-sample/src/main/java/com/snilius/aboutit/sample/MainActivity.java b/aboutit-sample/src/main/java/com/snilius/aboutit/sample/MainActivity.java index 1974129..f3ec338 100644 --- a/aboutit-sample/src/main/java/com/snilius/aboutit/sample/MainActivity.java +++ b/aboutit-sample/src/main/java/com/snilius/aboutit/sample/MainActivity.java @@ -25,14 +25,14 @@ public class MainActivity extends AppCompatActivity implements AdapterView.OnIte super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setTitle(R.string.app_name); - Spinner spinner = (Spinner) findViewById(R.id.spinner); + Spinner spinner = findViewById(R.id.spinner); spinner.setOnItemSelectedListener(this); - mSampleText = (TextView) findViewById(R.id.sample_text); + mSampleText = findViewById(R.id.sample_text); } diff --git a/aboutit/build.gradle b/aboutit/build.gradle index bb3b89e..45d55d0 100644 --- a/aboutit/build.gradle +++ b/aboutit/build.gradle @@ -1,21 +1,13 @@ apply plugin: 'com.android.library' -apply plugin: 'maven' -apply plugin: 'signing' -apply plugin: 'nexus-workflow' - -group = "com.snilius.aboutit" -archivesBaseName = "aboutit" -version = "1.2.1" android { - compileSdkVersion 23 - buildToolsVersion '23.0.1' + compileSdkVersion 27 + buildToolsVersion '27.0.03' defaultConfig { minSdkVersion 14 - targetSdkVersion 23 + targetSdkVersion 27 versionCode 7 - versionName version } buildTypes { @@ -26,7 +18,7 @@ android { } dependencies { - compile 'com.android.support:appcompat-v7:23.0.1' + implementation 'com.android.support:appcompat-v7:27.1.1' } configurations { @@ -35,80 +27,4 @@ configurations { } } -signing { - sign configurations.archives -} - -uploadArchives { - repositories { - mavenDeployer { - beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } - - repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { - authentication(userName: ossrhUsername, password: ossrhPassword) - } - - snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { - authentication(userName: ossrhUsername, password: ossrhPassword) - } - - pom.project { - name 'AboutIt' - packaging 'jar' - // optionally artifactId can be defined here - description 'A About-page creator' - url 'https://github.com/victorhaggqvist/AboutIt' - - scm { - connection 'scm:git:https://github.com/victorhaggqvist/AboutIt.git' - developerConnection 'scm:git:https://github.com/victorhaggqvist/AboutIt.git' - url 'https://github.com/victorhaggqvist/AboutIt' - } - - licenses { - license { - name 'The Apache License, Version 2.0' - url 'http://www.apache.org/licenses/LICENSE-2.0.txt' - } - } - - developers { - developer { - id 'atriix' - name 'Victor Häggqvist' - email 'victor@snilius.com' - } - } - } - } - } -} - -android.libraryVariants.all { variant -> - task("${variant.name}Javadoc", type: Javadoc, dependsOn: "assemble${variant.name.capitalize()}") { - source = variant.javaCompile.source - - title = "AboutIt" - - options.links("http://docs.oracle.com/javase/7/docs/api/"); - options.linksOffline("http://d.android.com/reference","${android.sdkDirectory}/docs/reference"); - - // First add all of your dependencies to the classpath, then add the android jars - classpath += files(variant.javaCompile.classpath.files) - classpath += files(android.getBootClasspath()) - - // We're excluding these generated files - exclude '**/BuildConfig.java' - exclude '**/R.java' - } -} - -android.libraryVariants.all { variant -> - task("${variant.name}JavadocJar", type: Jar, dependsOn: "${variant.name}Javadoc") { - classifier = 'javadoc' - from tasks["${variant.name}Javadoc"].destinationDir - } - - // Add the Javadoc jar to the project's artifacts. This will allow us to upload it easily later - project.artifacts.add("archives", tasks["${variant.name}JavadocJar"]); -} +apply from: rootProject.file('gradle/gradle-mvn-push.gradle') diff --git a/aboutit/gradle.properties b/aboutit/gradle.properties new file mode 100644 index 0000000..676bc4a --- /dev/null +++ b/aboutit/gradle.properties @@ -0,0 +1,4 @@ +POM_ARTIFACT_ID=aboutit +POM_NAME=AboutIt +POM_PACKAGING=aar +VERSION_NAME=1.2.2-SNAPSHOT \ No newline at end of file diff --git a/build.gradle b/build.gradle index edc5247..d6d72df 100644 --- a/build.gradle +++ b/build.gradle @@ -3,18 +3,16 @@ buildscript { repositories { jcenter() + google() } dependencies { - classpath 'com.android.tools.build:gradle:1.3.0' - classpath 'com.adaptc.gradle:nexus-workflow:0.6' - - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files + classpath 'com.android.tools.build:gradle:3.3.0-alpha03' } } allprojects { repositories { jcenter() + google() } } diff --git a/gradle.properties b/gradle.properties index 1d3591c..4520aeb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,4 +15,20 @@ # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true \ No newline at end of file +# org.gradle.parallel=true + +GROUP=com.snilius.aboutit + +POM_DESCRIPTION=A About-page creator + +POM_URL=https://github.com/victorhaggqvist/AboutIt +POM_SCM_URL=https://github.com/victorhaggqvist/AboutIt +POM_SCM_CONNECTION=scm:git:git://github.com/victorhaggqvist/AboutIt.git +POM_SCM_DEV_CONNECTION=scm:git:ssh://git@github.com/victorhaggqvist/AboutIt.git + +POM_LICENCE_NAME=The Apache Software License, Version 2.0 +POM_LICENCE_URL=https://www.apache.org/licenses/LICENSE-2.0.txt +POM_LICENCE_DIST=repo + +POM_DEVELOPER_ID=atriix +POM_DEVELOPER_NAME=Victor Häggqvist diff --git a/gradle/gradle-mvn-push.gradle b/gradle/gradle-mvn-push.gradle new file mode 100644 index 0000000..322aa76 --- /dev/null +++ b/gradle/gradle-mvn-push.gradle @@ -0,0 +1,218 @@ +/* + * Copyright 2013 Chris Banes + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +apply plugin: 'maven' +apply plugin: 'signing' + +version = VERSION_NAME +group = GROUP + +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('SONATYPE_NEXUS_USERNAME') ? SONATYPE_NEXUS_USERNAME : "" +} + +def getRepositoryPassword() { + return hasProperty('SONATYPE_NEXUS_PASSWORD') ? SONATYPE_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 + } + + if (project.getPlugins().hasPlugin('com.android.application') || + project.getPlugins().hasPlugin('com.android.library')) { + task install(type: Upload, dependsOn: assemble) { + repositories.mavenInstaller { + configuration = configurations.archives + + pom.groupId = GROUP + pom.artifactId = POM_ARTIFACT_ID + pom.version = VERSION_NAME + + 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 + } + } + } + } + } + + task androidJavadocs(type: Javadoc) { + source = android.sourceSets.main.java.source + classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + } + + task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { + classifier = 'javadoc' + from androidJavadocs.destinationDir + } + + task androidSourcesJar(type: Jar) { + classifier = 'sources' + from android.sourceSets.main.java.source + } + } else { + install { + repositories.mavenInstaller { + pom.groupId = GROUP + pom.artifactId = POM_ARTIFACT_ID + pom.version = VERSION_NAME + + pom.project { + name POM_NAME + packaging POM_PACKAGING + description POM_DESCRIPTION + url POM_URL + + scm { + url POM_SCM_URLsignArchives + 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 + } + } + } + } + } + + task sourcesJar(type: Jar, dependsOn:classes) { + classifier = 'sources' + from sourceSets.main.allSource + } + + task javadocJar(type: Jar, dependsOn:javadoc) { + classifier = 'javadoc' + from javadoc.destinationDir + } + } + + if (JavaVersion.current().isJava8Compatible()) { + allprojects { + tasks.withType(Javadoc) { + options.addStringOption('Xdoclint:none', '-quiet') + } + } + } + + artifacts { + if (project.getPlugins().hasPlugin('com.android.application') || + project.getPlugins().hasPlugin('com.android.library')) { + archives androidSourcesJar + archives androidJavadocsJar + } else { + archives sourcesJar + archives javadocJar + } + } +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..c44b679 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0c71e76..7169263 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip -- cgit v1.2.3