11// buildSrc/src/main/kotlin/PublishingConventionPlugin.kt
2+ import com.vanniktech.maven.publish.AndroidSingleVariantLibrary
3+ import com.vanniktech.maven.publish.MavenPublishBaseExtension
24import org.gradle.api.Plugin
35import 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
86import 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
911import org.gradle.testing.jacoco.plugins.JacocoTaskExtension
10- import org.gradle.plugins.signing.SigningExtension
11- import org.gradle.api.publish.maven.*
1212
1313class 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}
0 commit comments