From 8e8051ebbac9a504bac71cc3f07910cde54caf43 Mon Sep 17 00:00:00 2001 From: Drew Hamilton Date: Sat, 30 Dec 2023 18:17:16 -0800 Subject: [PATCH] Migrate to standard Gradle Maven publish plugin --- .github/workflows/release.yml | 12 ++-- build.gradle | 3 + gradle/libs.versions.toml | 4 ++ publish.gradle | 102 ---------------------------------- xml-theme/build.gradle | 43 +++++++++++--- 5 files changed, 49 insertions(+), 115 deletions(-) delete mode 100644 publish.gradle diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ae47eaf..5982410 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,11 +20,11 @@ jobs: distribution: zulu java-version: 21 - name: Assemble for release - run: ./gradlew clean assembleRelease --stacktrace + run: ./gradlew assembleRelease --stacktrace - name: Publish env: - ORG_GRADLE_PROJECT_personalSonatypeIssuesUsername: ${{ secrets.ORG_GRADLE_PROJECT_personalSonatypeIssuesUsername }} - ORG_GRADLE_PROJECT_personalSonatypeIssuesPassword: ${{ secrets.ORG_GRADLE_PROJECT_personalSonatypeIssuesPassword }} - ORG_GRADLE_PROJECT_personalGpgKey: ${{ secrets.ORG_GRADLE_PROJECT_personalGpgKey }} - ORG_GRADLE_PROJECT_personalGpgPassword: ${{ secrets.ORG_GRADLE_PROJECT_personalGpgPassword }} - run: ./gradlew publishReleasePublicationToMavenCentralRepository --stacktrace + ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.ORG_GRADLE_PROJECT_personalSonatypeIssuesUsername }} + ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.ORG_GRADLE_PROJECT_personalSonatypeIssuesPassword }} + ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.ORG_GRADLE_PROJECT_personalGpgKey }} + ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.ORG_GRADLE_PROJECT_personalGpgPassword }} + run: ./gradlew publish --stacktrace --no-configuration-cache diff --git a/build.gradle b/build.gradle index 1680a52..99235ba 100644 --- a/build.gradle +++ b/build.gradle @@ -30,6 +30,9 @@ ext { } allprojects { project -> + group = rootProject.property("GROUP") + version = rootProject.property("VERSION_NAME") + repositories { google() mavenCentral() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6eb4936..93effb8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -19,3 +19,7 @@ kotlin-gradle = "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22" kotlinx-binaryCompatibilityValidator = "org.jetbrains.kotlinx:binary-compatibility-validator:0.13.2" materialComponents = "com.google.android.material:material:1.11.0" + +[plugins] + +mavenPublish = { id = "com.vanniktech.maven.publish", version = "0.26.0" } diff --git a/publish.gradle b/publish.gradle deleted file mode 100644 index 90e4c51..0000000 --- a/publish.gradle +++ /dev/null @@ -1,102 +0,0 @@ -// Applied per published module -// The module must define ext.artifactName and ext.publishedDescription - -group = rootProject.GROUP -version = rootProject.VERSION_NAME - -task sourcesJar(type: Jar) { - archiveClassifier.set 'sources' - from android.sourceSets.main.java.srcDirs -} - -task javadoc(type: Javadoc) { - source = android.sourceSets.main.java.srcDirs - classpath += files(android.getBootClasspath().join(File.pathSeparator)) - android.libraryVariants.all { variant -> - classpath += variant.javaCompileProvider.get().classpath - } -} - -task javadocJar(type: Jar, dependsOn: javadoc) { - archiveClassifier.set 'javadoc' - from javadoc.destinationDir -} - -artifacts { - archives javadocJar - archives sourcesJar -} - -assemble { - dependsOn sourcesJar - dependsOn javadocJar -} - -apply plugin: 'maven-publish' -afterEvaluate { - publishing { - publications { - release(MavenPublication) { - groupId group - artifactId artifactName - version version - - from components.release - artifact sourcesJar - artifact javadocJar - - pom { - name = artifactName - description = publishedDescription - - url = 'https://github.com/drewhamilton/SkylightAndroidBrand' - licenses { - license { - name = 'The Apache Software License, Version 2.0' - url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' - } - } - - developers { - developer { - id = 'drewhamilton' - name = 'Drew Hamilton' - email = 'software@drewhamilton.dev' - } - } - - scm { - connection = 'scm:git:github.com/drewhamilton/SkylightAndroidBrand.git' - developerConnection = 'scm:git:ssh://github.com/drewhamilton/SkylightAndroidBrand.git' - url = 'https://github.com/drewhamilton/SkylightAndroidBrand' - } - } - } - } - - repositories { - maven { - name = 'MavenCentral' - - def releasesRepoUrl = 'https://oss.sonatype.org/service/local/staging/deploy/maven2/' - def snapshotsRepoUrl = 'https://oss.sonatype.org/content/repositories/snapshots/' - url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl - - def sonatypeIssuesUsername = findProperty('personalSonatypeIssuesUsername') - def sonatypeIssuesPassword = findProperty('personalSonatypeIssuesPassword') - credentials { - username = sonatypeIssuesUsername - password = sonatypeIssuesPassword - } - } - } - } -} - -apply plugin: 'signing' -signing { - def key = findProperty('personalGpgKey') - def password = findProperty('personalGpgPassword') - useInMemoryPgpKeys(key, password) - sign publishing.publications -} diff --git a/xml-theme/build.gradle b/xml-theme/build.gradle index 50e6dab..3b3f934 100644 --- a/xml-theme/build.gradle +++ b/xml-theme/build.gradle @@ -1,14 +1,11 @@ +import com.vanniktech.maven.publish.SonatypeHost + plugins { id 'com.android.library' id 'org.jetbrains.kotlin.android' + alias(libs.plugins.mavenPublish) } -ext { - artifactName = rootProject.POM_ARTIFACT_ID - publishedDescription = 'An Android theme for Skylight apps.' -} -apply from: '../publish.gradle' - android { namespace "dev.drewhamilton.skylight.android.brand.xml" compileSdkVersion projectVersions.compileSdk @@ -16,7 +13,7 @@ android { defaultConfig { minSdkVersion projectVersions.minSdk targetSdkVersion projectVersions.targetSdk - versionName version + versionName rootProject.property("VERSION_NAME") testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" @@ -54,3 +51,35 @@ dependencies { androidTestImplementation(libs.androidx.testRules) androidTestImplementation(libs.androidx.testRunner) } + +mavenPublishing { + pom { + name.set(property("POM_ARTIFACT_ID")) + description.set("An Android theme for Skylight apps.") + + url.set("https://github.com/drewhamilton/SkylightAndroidBrand") + licenses { + license { + name.set("The Apache Software License, Version 2.0") + url.set("http://www.apache.org/licenses/LICENSE-2.0.txt") + } + } + + developers { + developer { + id.set("drewhamilton") + name.set("Drew Hamilton") + email.set("software@drewhamilton.dev") + } + } + + scm { + connection.set("scm:git:github.com/drewhamilton/SkylightAndroidBrand.git") + developerConnection.set("scm:git:ssh://github.com/drewhamilton/SkylightAndroidBrand.git") + url.set("https://github.com/drewhamilton/SkylightAndroidBrand") + } + } + + publishToMavenCentral(SonatypeHost.DEFAULT, true) + signAllPublications() +}