Skip to content

Commit 0ffb477

Browse files
authored
chore: migrating to vanniktech plugin (#43)
* chore: migrating to vanniktech plugin * chore: removed old properties
1 parent eb223f1 commit 0ffb477

6 files changed

Lines changed: 54 additions & 75 deletions

File tree

.github/workflows/release.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,14 @@ jobs:
3838
gpg --quiet --output $GITHUB_WORKSPACE/release.gpg --dearmor ./release.asc
3939
4040
echo "Build and publish"
41-
sed -i -e "s,sonatypeToken=,sonatypeToken=$SONATYPE_TOKEN_USERNAME,g" gradle.properties
41+
sed -i -e "s,mavenCentralUsername=,mavenCentralUsername=$SONATYPE_TOKEN_USERNAME,g" gradle.properties
4242
SONATYPE_TOKEN_PASSWORD_ESCAPED=$(printf '%s\n' "$SONATYPE_TOKEN_PASSWORD" | sed -e 's/[\/&]/\\&/g')
43-
sed -i -e "s,sonatypeTokenPassword=,sonatypeTokenPassword=$SONATYPE_TOKEN_PASSWORD_ESCAPED,g" gradle.properties
43+
sed -i -e "s,mavenCentralPassword=,mavenCentralPassword=$SONATYPE_TOKEN_PASSWORD_ESCAPED,g" gradle.properties
4444
sed -i -e "s,signing.keyId=,signing.keyId=$GPG_KEY_ID,g" gradle.properties
4545
sed -i -e "s,signing.password=,signing.password=$GPG_PASSWORD,g" gradle.properties
4646
sed -i -e "s,signing.secretKeyRingFile=,signing.secretKeyRingFile=$GITHUB_WORKSPACE/release.gpg,g" gradle.properties
4747
env:
48-
GPG_KEY_ARMOR: "${{ secrets.SYNCED_GPG_KEY_ARMOR }}"
48+
GPG_KEY_ARMOR: ${{ secrets.SYNCED_GPG_KEY_ARMOR }}
4949
GPG_KEY_ID: ${{ secrets.SYNCED_GPG_KEY_ID }}
5050
GPG_PASSWORD: ${{ secrets.SYNCED_GPG_KEY_PASSWORD }}
5151
SONATYPE_TOKEN_PASSWORD: ${{ secrets.SYNCED_SONATYPE_TOKEN_PASSWORD }}

.releaserc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ plugins:
1515
to: ":${nextRelease.version}"
1616
- - "@semantic-release/exec"
1717
- prepareCmd: "./gradlew build --warn --stacktrace"
18-
publishCmd: "./gradlew publish --warn --stacktrace"
18+
publishCmd: "./gradlew publishToMavenCentral --warn --stacktrace"
1919
- - "@semantic-release/git"
2020
- assets:
2121
- "build.gradle.kts"

build-logic/convention/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ dependencies {
1414
implementation(libs.android.gradle.plugin)
1515
implementation(libs.dokka.plugin)
1616
implementation(libs.org.jacoco.core)
17+
implementation(libs.gradle.maven.publish.plugin)
1718
}
1819

1920
gradlePlugin {
Lines changed: 41 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,34 @@
11
// buildSrc/src/main/kotlin/PublishingConventionPlugin.kt
2+
import com.vanniktech.maven.publish.AndroidSingleVariantLibrary
3+
import com.vanniktech.maven.publish.MavenPublishBaseExtension
24
import org.gradle.api.Plugin
35
import org.gradle.api.Project
4-
import org.gradle.api.publish.PublishingExtension
5-
import org.gradle.api.publish.maven.MavenPublication
6-
import org.gradle.kotlin.dsl.*
7-
import org.gradle.testing.jacoco.plugins.JacocoPluginExtension
86
import org.gradle.api.tasks.testing.Test
7+
import org.gradle.kotlin.dsl.apply
8+
import org.gradle.kotlin.dsl.configure
9+
import org.gradle.kotlin.dsl.withType
10+
import org.gradle.testing.jacoco.plugins.JacocoPluginExtension
911
import org.gradle.testing.jacoco.plugins.JacocoTaskExtension
10-
import org.gradle.plugins.signing.SigningExtension
11-
import org.gradle.api.publish.maven.*
1212

1313
class PublishingConventionPlugin : Plugin<Project> {
1414
override fun apply(project: Project) {
1515
project.run {
16-
1716
applyPlugins()
1817
configureJacoco()
19-
configurePublishing()
20-
configureSigning()
18+
configureMavenPublishing()
2119
}
2220
}
2321

2422
private fun Project.applyPlugins() {
2523
apply(plugin = "com.android.library")
2624
apply(plugin = "com.mxalbert.gradle.jacoco-android")
27-
apply(plugin = "maven-publish")
2825
apply(plugin = "org.jetbrains.dokka")
29-
apply(plugin = "signing")
26+
apply(plugin = "com.vanniktech.maven.publish")
3027
}
3128

3229
private fun Project.configureJacoco() {
3330
configure<JacocoPluginExtension> {
3431
toolVersion = "0.8.7"
35-
3632
}
3733

3834
tasks.withType<Test>().configureEach {
@@ -43,68 +39,44 @@ class PublishingConventionPlugin : Plugin<Project> {
4339
}
4440
}
4541

46-
private fun Project.configurePublishing() {
47-
extensions.configure<com.android.build.gradle.LibraryExtension> {
48-
publishing {
49-
singleVariant("release") {
50-
withSourcesJar()
51-
withJavadocJar()
52-
}
53-
}
54-
}
55-
extensions.configure<PublishingExtension> {
56-
publications {
57-
create<MavenPublication>("aar") {
58-
afterEvaluate {
59-
from(components["release"])
60-
}
61-
pom {
62-
name.set(project.name)
63-
description.set("Jetpack Compose components for the Places SDK for Android")
64-
url.set("https://github.com/googlemaps/android-places-compose")
65-
scm {
66-
connection.set("scm:git@github.com:googlemaps/android-places-compose.git")
67-
developerConnection.set("scm:git@github.com:googlemaps/android-places-compose.git")
68-
url.set("https://github.com/googlemaps/android-places-compose")
69-
}
70-
licenses {
71-
license {
72-
name.set("The Apache Software License, Version 2.0")
73-
url.set("http://www.apache.org/licenses/LICENSE-2.0.txt")
74-
distribution.set("repo")
75-
}
76-
}
77-
organization {
78-
name.set("Google Inc")
79-
url.set("http://developers.google.com/maps")
80-
}
81-
developers {
82-
developer {
83-
name.set("Google Inc.")
84-
}
85-
}
42+
private fun Project.configureMavenPublishing() {
43+
extensions.configure<MavenPublishBaseExtension> {
44+
configure(
45+
AndroidSingleVariantLibrary(
46+
variant = "release",
47+
sourcesJar = true,
48+
publishJavadocJar = true
49+
)
50+
)
51+
publishToMavenCentral()
52+
signAllPublications()
53+
pom {
54+
name.set(project.name)
55+
description.set("Jetpack Compose components for the Places SDK for Android")
56+
url.set("https://github.com/googlemaps/android-places-compose")
57+
licenses {
58+
license {
59+
name.set("The Apache Software License, Version 2.0")
60+
url.set("http://www.apache.org/licenses/LICENSE-2.0.txt")
61+
distribution.set("repo")
8662
}
8763
}
88-
}
89-
repositories {
90-
maven {
91-
val releasesRepoUrl =
92-
uri("https://ossrh-staging-api.central.sonatype.com/service/local/staging/deploy/maven2/")
93-
val snapshotsRepoUrl =
94-
uri("https://central.sonatype.com/repository/maven-snapshots/")
95-
url = if (project.version.toString().endsWith("SNAPSHOT")) snapshotsRepoUrl else releasesRepoUrl
96-
credentials {
97-
username = project.findProperty("sonatypeToken") as String?
98-
password = project.findProperty("sonatypeTokenPassword") as String?
64+
scm {
65+
connection.set("scm:git@github.com:googlemaps/android-places-compose.git")
66+
developerConnection.set("scm:git@github.com:googlemaps/android-places-compose.git")
67+
url.set("https://github.com/googlemaps/android-places-compose")
68+
}
69+
organization {
70+
name.set("Google Inc")
71+
url.set("http://developers.google.com/maps")
72+
}
73+
developers {
74+
developer {
75+
id.set("google")
76+
name.set("Google Inc.")
9977
}
10078
}
10179
}
10280
}
10381
}
104-
105-
private fun Project.configureSigning() {
106-
configure<SigningExtension> {
107-
sign(extensions.getByType<PublishingExtension>().publications["aar"])
108-
}
109-
}
11082
}

gradle.properties

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,9 @@ signing.keyId=
2626
signing.password=
2727
signing.secretKeyRingFile=
2828

29-
sonatypeToken=
30-
sonatypeTokenPassword=
29+
mavenCentralUsername=
30+
mavenCentralPassword=
31+
32+
# Add a property to enable automatic release to Maven Central (optional, but good for CI)
33+
# If true, publishToMavenCentral will also close and release the staging repository
34+
mavenCentralAutomaticRelease=false

gradle/libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ secretsGradlePlugin = "2.0.1"
2929
truth = "1.4.4"
3030
uiTestAndroid = "1.7.8"
3131
uiToolingVersion = "1.7.8"
32+
gradleMavenPublishPlugin = "0.34.0"
3233

3334
[libraries]
3435
accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanistPermissions" }
@@ -72,6 +73,7 @@ places = { group = "com.google.android.libraries.places", name = "places", versi
7273
robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" }
7374
ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4", version.ref = "uiToolingVersion" }
7475
ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest", version.ref = "uiToolingVersion" }
76+
gradle-maven-publish-plugin = { module = "com.vanniktech:gradle-maven-publish-plugin", version.ref = "gradleMavenPublishPlugin" }
7577

7678
[plugins]
7779
android-application = { id = "com.android.application", version.ref = "agp" }

0 commit comments

Comments
 (0)