From 3554931f036743d19877e2c04b23df8eae04fd16 Mon Sep 17 00:00:00 2001 From: Olivier Notteghem Date: Tue, 27 Jul 2021 11:08:09 -0700 Subject: [PATCH 1/7] Enable android_library() targets to possibly specify alternates deps for resources target compilation --- .../config/OkbuckAndroidModules.rocker.raw | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/buildSrc/src/main/rocker/com/uber/okbuck/template/config/OkbuckAndroidModules.rocker.raw b/buildSrc/src/main/rocker/com/uber/okbuck/template/config/OkbuckAndroidModules.rocker.raw index 7d7e647ca..c3d48007d 100644 --- a/buildSrc/src/main/rocker/com/uber/okbuck/template/config/OkbuckAndroidModules.rocker.raw +++ b/buildSrc/src/main/rocker/com/uber/okbuck/template/config/OkbuckAndroidModules.rocker.raw @@ -41,6 +41,8 @@ def okbuck_android_module( res_assets = None, res_resource_union = None, res_extra_deps = [], + res_deps = None, + res_exported_deps = None, ## Android library related args deps = [], exported_deps = [], @@ -58,13 +60,25 @@ def okbuck_android_module( secondary_manifests = manifest_secondary_manifests, ) - res_ext_aar_deps = get_exts_aar_deps(deps) - res_lib_deps = get_libs_res_deps(deps) - res_deps = res_ext_aar_deps + res_lib_deps + res_extra_deps + # Let targets possibly specify their own res dependencies, to avoid over-depping and + # and possibly hitting java compilation error due to too many resources ids declared. + if res_deps == None: + res_ext_aar_deps = get_exts_aar_deps(deps) + res_lib_deps = get_libs_res_deps(deps) + res_deps = res_ext_aar_deps + res_lib_deps + res_extra_deps + else: + res_ext_aar_deps = get_exts_aar_deps(res_deps) + res_lib_deps = get_libs_res_deps(res_deps) + res_deps = res_ext_aar_deps + res_lib_deps + res_extra_deps - res_exported_ext_aar_deps = get_exts_aar_deps(exported_deps) - res_exported_lib_deps = get_libs_res_deps(exported_deps) - res_exported_deps = res_exported_ext_aar_deps + res_exported_lib_deps + if res_exported_deps == None: + res_exported_ext_aar_deps = get_exts_aar_deps(exported_deps) + res_exported_lib_deps = get_libs_res_deps(exported_deps) + res_exported_deps = res_exported_ext_aar_deps + res_exported_lib_deps + else: + res_exported_ext_aar_deps = get_exts_aar_deps(res_exported_deps) + res_exported_lib_deps = get_libs_res_deps(res_exported_deps) + res_exported_deps = res_exported_ext_aar_deps + res_exported_lib_deps res_rule_name = name.replace("src", "res", 1) res_kwargs = dict( From 5fe10608178ffdb878f042a9a8b215d58130b047 Mon Sep 17 00:00:00 2001 From: Olivier Notteghem Date: Tue, 27 Jul 2021 20:20:43 -0700 Subject: [PATCH 2/7] Switch to using standard gradle mvn push --- buildSrc/build.gradle | 58 +-------- buildSrc/gradle.properties | 16 +++ gradle/gradle-mvn-push.gradle | 225 ++++++++++++++++++++++++++++++++++ 3 files changed, 242 insertions(+), 57 deletions(-) create mode 100644 buildSrc/gradle.properties create mode 100644 gradle/gradle-mvn-push.gradle diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index dc6fb31d8..fe414f963 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -12,11 +12,10 @@ buildscript { } } -apply plugin: "maven-publish" -apply plugin: "com.jfrog.bintray" apply plugin: "com.fizzed.rocker" apply plugin: "net.ltgt.errorprone" +apply from: '../gradle/gradle-mvn-push.gradle' apply from: "../dependencies.gradle" repositories { @@ -103,61 +102,6 @@ tasks.withType(JavaCompile) { ] } -task javadocJar(type: Jar, dependsOn: javadoc) { - classifier = "javadoc" - from "build/docs/javadoc" -} - -task sourcesJar(type: Jar) { - from sourceSets.main.allSource - classifier = "sources" -} - -def publishVersion = "0.52.3" - -group = "com.uber" -version = publishVersion -def siteUrl = "https://github.com/uber/okbuck" -def gitUrl = "https://github.com/uber/okbuck.git" - -publishing { - publications { - mavenJava(MavenPublication) { - from components.java - - artifact sourcesJar - artifact javadocJar - - artifactId "okbuck" - } - } -} - -bintray { - user = project.properties.get("bintray.user") - key = project.properties.get("bintray.apikey") - publications = ["mavenJava"] - dryRun = false - publish = true - pkg { - repo = "gradle-plugins" - name = "okbuck" - userOrg = "uber" - desc = "Gradle plugin that lets developers utilize the Buck build system on a Gradle project" - websiteUrl = siteUrl - issueTrackerUrl = siteUrl + "/issues" - vcsUrl = gitUrl - licenses = ["MIT"] - labels = ["buck", "okbuck", "uber"] - publicDownloadNumbers = true - version { - name = publishVersion - released = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZZ").format(new Date()) - vcsTag = publishVersion - } - } -} - tasks.withType(com.fizzed.rocker.gradle.RockerTask).each { task -> task.doLast { def tree = fileTree(dir: task.outputDir, include: '**/*.java') diff --git a/buildSrc/gradle.properties b/buildSrc/gradle.properties new file mode 100644 index 000000000..23bde4fd8 --- /dev/null +++ b/buildSrc/gradle.properties @@ -0,0 +1,16 @@ +GROUP=com.uber +VERSION_NAME=0.52.3-SNAPSHOT +POM_DESCRIPTION=AGradle plugin that lets developers utilize the Buck build system on a Gradle project +POM_URL=https://github.com/uber/okbuck/ +POM_SCM_URL=https://github.com/uber/okbuck/ +POM_SCM_CONNECTION=scm:git:git://github.com/uber/okbuck.git +POM_SCM_DEV_CONNECTION=scm:git:ssh://git@github.com/uber/okbuck.git +POM_LICENCE_NAME=MIT +POM_LICENCE_URL=http://www.opensource.org/licenses/mit-license.phpandroid/master/LICENSE +POM_LICENCE_DIST=repo +POM_DEVELOPER_ID=uber +POM_DEVELOPER_NAME=Uber Technologies + +POM_NAME=okbuck +POM_ARTIFACT_ID=okbuck +POM_PACKAGING=jar \ No newline at end of file diff --git a/gradle/gradle-mvn-push.gradle b/gradle/gradle-mvn-push.gradle new file mode 100644 index 000000000..e1019399a --- /dev/null +++ b/gradle/gradle-mvn-push.gradle @@ -0,0 +1,225 @@ +/* + * Copyright (C) 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) { + if (!project.plugins.hasPlugin('kotlin-android')) { + source = android.sourceSets.main.java.srcDirs + } + classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + exclude '**/internal/*' + + if (JavaVersion.current().isJava8Compatible()) { + options.addStringOption('Xdoclint:none', '-quiet') + } + } + + task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { + classifier = 'javadoc' + from androidJavadocs.destinationDir + } + + task androidSourcesJar(type: Jar) { + classifier = 'sources' + from android.sourceSets.main.java.sourceFiles + } + } 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_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 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 From cc4b184d43908c7dab904f045d7f9d9e1a0e52e8 Mon Sep 17 00:00:00 2001 From: Olivier Notteghem Date: Tue, 27 Jul 2021 21:01:41 -0700 Subject: [PATCH 3/7] Prepare for version 0.52.4 --- buildSrc/gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/gradle.properties b/buildSrc/gradle.properties index 23bde4fd8..d74170b8a 100644 --- a/buildSrc/gradle.properties +++ b/buildSrc/gradle.properties @@ -1,5 +1,5 @@ GROUP=com.uber -VERSION_NAME=0.52.3-SNAPSHOT +VERSION_NAME=0.52.4 POM_DESCRIPTION=AGradle plugin that lets developers utilize the Buck build system on a Gradle project POM_URL=https://github.com/uber/okbuck/ POM_SCM_URL=https://github.com/uber/okbuck/ From 45938af3dc1a653c904e04349c2e4c5393a5f11d Mon Sep 17 00:00:00 2001 From: Olivier Notteghem Date: Tue, 27 Jul 2021 21:03:44 -0700 Subject: [PATCH 4/7] Prepare for version 0.52.4 (Readme files) --- README-zh.md | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README-zh.md b/README-zh.md index 6500fbddf..9e371e3c1 100644 --- a/README-zh.md +++ b/README-zh.md @@ -9,7 +9,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.uber:okbuck:0.52.3' + classpath 'com.uber:okbuck:0.52.4' } } diff --git a/README.md b/README.md index 025c99955..c1e44af77 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.uber:okbuck:0.52.3' + classpath 'com.uber:okbuck:0.52.4' } } From b4345e418732b450faa4100ff78be14b444b4cbc Mon Sep 17 00:00:00 2001 From: Olivier Notteghem Date: Wed, 28 Jul 2021 10:17:08 -0700 Subject: [PATCH 5/7] Fix typo in POM file --- buildSrc/gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/gradle.properties b/buildSrc/gradle.properties index d74170b8a..5010e93ed 100644 --- a/buildSrc/gradle.properties +++ b/buildSrc/gradle.properties @@ -1,6 +1,6 @@ GROUP=com.uber VERSION_NAME=0.52.4 -POM_DESCRIPTION=AGradle plugin that lets developers utilize the Buck build system on a Gradle project +POM_DESCRIPTION=A Gradle plugin that lets developers utilize the Buck build system on a Gradle project POM_URL=https://github.com/uber/okbuck/ POM_SCM_URL=https://github.com/uber/okbuck/ POM_SCM_CONNECTION=scm:git:git://github.com/uber/okbuck.git From 3a150a88e23d6687da8a6390096676fd7ac7fbb9 Mon Sep 17 00:00:00 2001 From: Olivier Notteghem Date: Wed, 28 Jul 2021 10:21:31 -0700 Subject: [PATCH 6/7] Remove change from previous PR --- .../config/OkbuckAndroidModules.rocker.raw | 28 ++++--------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/buildSrc/src/main/rocker/com/uber/okbuck/template/config/OkbuckAndroidModules.rocker.raw b/buildSrc/src/main/rocker/com/uber/okbuck/template/config/OkbuckAndroidModules.rocker.raw index c3d48007d..1e5e0e9b5 100644 --- a/buildSrc/src/main/rocker/com/uber/okbuck/template/config/OkbuckAndroidModules.rocker.raw +++ b/buildSrc/src/main/rocker/com/uber/okbuck/template/config/OkbuckAndroidModules.rocker.raw @@ -39,10 +39,6 @@ def okbuck_android_module( res_res = None, res_project_res = None, res_assets = None, - res_resource_union = None, - res_extra_deps = [], - res_deps = None, - res_exported_deps = None, ## Android library related args deps = [], exported_deps = [], @@ -60,25 +56,13 @@ def okbuck_android_module( secondary_manifests = manifest_secondary_manifests, ) - # Let targets possibly specify their own res dependencies, to avoid over-depping and - # and possibly hitting java compilation error due to too many resources ids declared. - if res_deps == None: - res_ext_aar_deps = get_exts_aar_deps(deps) - res_lib_deps = get_libs_res_deps(deps) - res_deps = res_ext_aar_deps + res_lib_deps + res_extra_deps - else: - res_ext_aar_deps = get_exts_aar_deps(res_deps) - res_lib_deps = get_libs_res_deps(res_deps) - res_deps = res_ext_aar_deps + res_lib_deps + res_extra_deps + res_ext_aar_deps = get_exts_aar_deps(deps) + res_lib_deps = get_libs_res_deps(deps) + res_deps = res_ext_aar_deps + res_lib_deps + res_extra_deps - if res_exported_deps == None: - res_exported_ext_aar_deps = get_exts_aar_deps(exported_deps) - res_exported_lib_deps = get_libs_res_deps(exported_deps) - res_exported_deps = res_exported_ext_aar_deps + res_exported_lib_deps - else: - res_exported_ext_aar_deps = get_exts_aar_deps(res_exported_deps) - res_exported_lib_deps = get_libs_res_deps(res_exported_deps) - res_exported_deps = res_exported_ext_aar_deps + res_exported_lib_deps + res_exported_ext_aar_deps = get_exts_aar_deps(exported_deps) + res_exported_lib_deps = get_libs_res_deps(exported_deps) + res_exported_deps = res_exported_ext_aar_deps + res_exported_lib_deps res_rule_name = name.replace("src", "res", 1) res_kwargs = dict( From 368354556d211cec39f0b50c9ffb0e1e8bf03d69 Mon Sep 17 00:00:00 2001 From: Olivier Notteghem Date: Wed, 28 Jul 2021 10:23:26 -0700 Subject: [PATCH 7/7] Re-add change from previous PR --- .../uber/okbuck/template/config/OkbuckAndroidModules.rocker.raw | 2 ++ 1 file changed, 2 insertions(+) diff --git a/buildSrc/src/main/rocker/com/uber/okbuck/template/config/OkbuckAndroidModules.rocker.raw b/buildSrc/src/main/rocker/com/uber/okbuck/template/config/OkbuckAndroidModules.rocker.raw index 1e5e0e9b5..7d7e647ca 100644 --- a/buildSrc/src/main/rocker/com/uber/okbuck/template/config/OkbuckAndroidModules.rocker.raw +++ b/buildSrc/src/main/rocker/com/uber/okbuck/template/config/OkbuckAndroidModules.rocker.raw @@ -39,6 +39,8 @@ def okbuck_android_module( res_res = None, res_project_res = None, res_assets = None, + res_resource_union = None, + res_extra_deps = [], ## Android library related args deps = [], exported_deps = [],