From d2ea35d8e1aee052c0e5a54339aa9be074392b3e Mon Sep 17 00:00:00 2001 From: Marijan Novak Date: Fri, 2 Apr 2021 12:23:06 +0200 Subject: [PATCH 1/3] Update project for Maven central publishing --- .gitignore | 6 +- build.gradle | 2 + buildSrc/.gitignore | 1 + buildSrc/build.gradle | 3 + .../maven/SonatypeConfiguration.groovy | 41 ++++++++++ .../infinum/maven/shared/Configuration.groovy | 14 ++++ goldeneye/publish.gradle | 76 +++++++++++++++++++ maven.gradle | 12 +++ 8 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 buildSrc/.gitignore create mode 100644 buildSrc/build.gradle create mode 100644 buildSrc/src/main/groovy/com/infinum/maven/SonatypeConfiguration.groovy create mode 100644 buildSrc/src/main/groovy/com/infinum/maven/shared/Configuration.groovy create mode 100644 goldeneye/publish.gradle create mode 100644 maven.gradle diff --git a/.gitignore b/.gitignore index 7bd124f..f0d33be 100644 --- a/.gitignore +++ b/.gitignore @@ -320,4 +320,8 @@ gradle-app.setting # End of https://www.gitignore.io/api/java,macos,linux,gradle,android,intellij,androidstudio -.idea/ \ No newline at end of file +.idea/ + +# Maven central publishing ignores +publish.properties +*.gpg \ No newline at end of file diff --git a/build.gradle b/build.gradle index 844deb2..a1a200c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,7 @@ buildscript { + apply from: "maven.gradle" + ext.sdk = [ min : 14, target: 28, diff --git a/buildSrc/.gitignore b/buildSrc/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/buildSrc/.gitignore @@ -0,0 +1 @@ +/build diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle new file mode 100644 index 0000000..2a1c7c2 --- /dev/null +++ b/buildSrc/build.gradle @@ -0,0 +1,3 @@ +plugins { + id "groovy" +} \ No newline at end of file diff --git a/buildSrc/src/main/groovy/com/infinum/maven/SonatypeConfiguration.groovy b/buildSrc/src/main/groovy/com/infinum/maven/SonatypeConfiguration.groovy new file mode 100644 index 0000000..c00a0eb --- /dev/null +++ b/buildSrc/src/main/groovy/com/infinum/maven/SonatypeConfiguration.groovy @@ -0,0 +1,41 @@ +package com.infinum.maven + +import com.infinum.maven.shared.Configuration + +class SonatypeConfiguration implements Configuration { + + private Properties properties = new Properties() + + @Override + void load() { + File file = new File("publish.properties") + if (file.exists()) { + properties.load(new FileInputStream(file)) + } else { + properties.setProperty("sonatype.name", "") + properties.setProperty("sonatype.url", "") + properties.setProperty("sonatype.user", "") + properties.setProperty("sonatype.password", "") + } + } + + @Override + String name() { + return properties.getProperty("sonatype.name").toString() + } + + @Override + String url() { + return properties.getProperty("sonatype.url").toString() + } + + @Override + String username() { + return properties.getProperty("sonatype.user").toString() + } + + @Override + String password() { + return properties.getProperty("sonatype.password").toString() + } +} \ No newline at end of file diff --git a/buildSrc/src/main/groovy/com/infinum/maven/shared/Configuration.groovy b/buildSrc/src/main/groovy/com/infinum/maven/shared/Configuration.groovy new file mode 100644 index 0000000..3f6b495 --- /dev/null +++ b/buildSrc/src/main/groovy/com/infinum/maven/shared/Configuration.groovy @@ -0,0 +1,14 @@ +package com.infinum.maven.shared + +interface Configuration { + + void load() + + String name() + + String url() + + String username() + + String password() +} \ No newline at end of file diff --git a/goldeneye/publish.gradle b/goldeneye/publish.gradle new file mode 100644 index 0000000..eed576a --- /dev/null +++ b/goldeneye/publish.gradle @@ -0,0 +1,76 @@ +apply plugin: "maven-publish" +apply plugin: "signing" + +task sourcesJar(type: Jar) { + archiveClassifier.set('sources') + from android.sourceSets.main.kotlin.srcDirs +} + +task javadocsJar(type: Jar, dependsOn: "dokkaJavadoc") { + archiveClassifier.set("javadoc") + from dokkaJavadoc.outputDirectory +} + +afterEvaluate { + publishing { + repositories { + maven { + name sonatype.name() + url sonatype.url() + credentials { + username sonatype.username() + password sonatype.password() + } + } + } + publications { + release(MavenPublication) { + groupId = releaseConfig.group + version = releaseConfig.version + + artifactId = 'goldeneye' + + artifact bundleReleaseAar + artifact sourcesJar + artifact javadocsJar + + pom { + name = 'GoldenEye' + description = 'A wrapper for Camera1 and Camera2 API which exposes simple to use interface.' + url = 'https://github.com/infinum/Android-GoldenEye' + licenses { + license { + name = 'The Apache License, Version 2.0' + url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' + } + } + developers { + developer { + id = 'novakmarijan' + name = 'novakmarijan' + email = 'marijan.novak@infinum.com' + } + } + scm { + connection = 'https://github.com/infinum/Android-GoldenEye.git' + developerConnection = 'https://github.com/infinum/Android-GoldenEye.git' + url = 'https://github.com/infinum/Android-GoldenEye' + } + } + pom.withXml { + def root = asNode() + def dependenciesNode = root.appendNode('dependencies') + configurations.implementation.allDependencies.each { + def dependencyNode = dependenciesNode.appendNode('dependency') + dependencyNode.appendNode('groupId', it.group) + dependencyNode.appendNode('artifactId', it.name) + dependencyNode.appendNode('version', it.version) + } + } + signing { + sign publishing.publications.release + } + } + } + } +} \ No newline at end of file diff --git a/maven.gradle b/maven.gradle new file mode 100644 index 0000000..e202b69 --- /dev/null +++ b/maven.gradle @@ -0,0 +1,12 @@ +import com.infinum.maven.SonatypeConfiguration + +SonatypeConfiguration.metaClass.constructor = { -> + def constructor = SonatypeConfiguration.class.getConstructor() + def instance = constructor.newInstance() + instance.load() + instance +} + +ext { + sonatype = new SonatypeConfiguration() +} \ No newline at end of file From a5860c2b4f4815deeabc9dc642d691cd01797a44 Mon Sep 17 00:00:00 2001 From: Marijan Novak Date: Fri, 2 Apr 2021 14:54:53 +0200 Subject: [PATCH 2/3] Fix gradle tasks --- build.gradle | 9 +++-- goldeneye/bintray.gradle | 43 ------------------------ goldeneye/build.gradle | 2 +- goldeneye/publish.gradle | 6 ++-- gradle/wrapper/gradle-wrapper.properties | 4 +-- tasks.gradle | 15 --------- 6 files changed, 10 insertions(+), 69 deletions(-) delete mode 100644 goldeneye/bintray.gradle diff --git a/build.gradle b/build.gradle index a1a200c..4756bef 100644 --- a/build.gradle +++ b/build.gradle @@ -4,13 +4,13 @@ buildscript { ext.sdk = [ min : 14, - target: 28, + target: 28 ] ext.versions = [ goldeneye: '1.1.2', google : '28.0.0', - kotlin : '1.3.10' + kotlin : '1.4.32' ] repositories { @@ -18,10 +18,9 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:4.1.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${versions.kotlin}" - classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3' - classpath "org.jetbrains.dokka:dokka-gradle-plugin:0.9.17" + classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.4.20" } } diff --git a/goldeneye/bintray.gradle b/goldeneye/bintray.gradle deleted file mode 100644 index c6a350b..0000000 --- a/goldeneye/bintray.gradle +++ /dev/null @@ -1,43 +0,0 @@ -apply plugin: 'maven-publish' -apply plugin: 'com.jfrog.bintray' - -publishing { - publications { - Publication(MavenPublication) { - artifact("$buildDir/outputs/aar/goldeneye-release.aar") - groupId 'co.infinum' - artifact sourcesJar - artifact javadocsJar - artifactId 'goldeneye' - version versions.goldeneye - - pom.withXml { - def root = asNode() - def dependenciesNode = root.appendNode('dependencies') - configurations.implementation.allDependencies.each { - def dependencyNode = dependenciesNode.appendNode('dependency') - dependencyNode.appendNode('groupId', it.group) - dependencyNode.appendNode('artifactId', it.name) - dependencyNode.appendNode('version', it.version) - } - } - } - } -} - -bintray { - user = System.getenv('BINTRAY_USER') - key = System.getenv('BINTRAY_API_KEY') - publish = false - publications = ['Publication'] - - pkg { - repo = 'android' - name = 'goldeneye' - userOrg = 'infinum' - - version { - name = versions.goldeneye - } - } -} \ No newline at end of file diff --git a/goldeneye/build.gradle b/goldeneye/build.gradle index cdd292a..8298f75 100644 --- a/goldeneye/build.gradle +++ b/goldeneye/build.gradle @@ -16,6 +16,6 @@ dependencies { } apply from: '../tasks.gradle' -apply from: 'bintray.gradle' +apply from: 'publish.gradle' preBuild.dependsOn ':goldeneye:generateReadme' diff --git a/goldeneye/publish.gradle b/goldeneye/publish.gradle index eed576a..eccbdfa 100644 --- a/goldeneye/publish.gradle +++ b/goldeneye/publish.gradle @@ -25,8 +25,8 @@ afterEvaluate { } publications { release(MavenPublication) { - groupId = releaseConfig.group - version = releaseConfig.version + groupId = 'co.infinum' + version = versions.goldeneye artifactId = 'goldeneye' @@ -47,7 +47,7 @@ afterEvaluate { developers { developer { id = 'novakmarijan' - name = 'novakmarijan' + name = 'Marijan Novak' email = 'marijan.novak@infinum.com' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 23cfbd6..b2fa886 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Sep 25 13:16:57 CEST 2018 +#Fri Apr 02 14:00:41 CEST 2021 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip diff --git a/tasks.gradle b/tasks.gradle index c1a3628..819cd4e 100644 --- a/tasks.gradle +++ b/tasks.gradle @@ -9,21 +9,6 @@ afterEvaluate { }) } -dokka { - outputFormat = 'html' - outputDirectory = "$buildDir/javadoc" -} - -task javadocsJar(type: Jar, dependsOn: dokka) { - classifier = 'javadoc' - from dokka.outputDirectory -} - -task sourcesJar(type: Jar, dependsOn: assemble) { - from android.sourceSets.main.java.srcDirs - classifier = 'sources' -} - task generateReadme { doFirst { def readmeFile = new File("${project.rootDir}/README.md") From dc6ccbf61741eb8bf4b086261f43f062dabc938f Mon Sep 17 00:00:00 2001 From: Marijan Novak Date: Tue, 6 Apr 2021 09:41:17 +0200 Subject: [PATCH 3/3] Update gradle wrapper --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b2fa886..4b26c0a 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-6.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip