11
2- import com.android.build.gradle.LibraryExtension
3- import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
4- import org.gradle.accessors.dm.LibrariesForLibs
5- import se.ansman.dagger.auto.gradle.execWithOutput
6- import se.ansman.dagger.auto.gradle.mapNullable
2+ import com.vanniktech.maven.publish.AndroidSingleVariantLibrary
3+ import com.vanniktech.maven.publish.JavadocJar
4+ import com.vanniktech.maven.publish.KotlinJvm
5+ import com.vanniktech.maven.publish.SonatypeHost
76
87plugins {
9- id(" maven-publish" )
10- id(" signing" )
118 id(" dokka-common" )
12- id(" se.ansman.sonatype-publish-fix" )
9+ id(" com.vanniktech.maven.publish" )
10+ id(" signing" )
1311}
1412
15- val libs = the<LibrariesForLibs >()
16-
17- val gitCommit = project
18- .execWithOutput {
19- commandLine(" git" , " rev-parse" , " HEAD" )
20- workingDir = project.rootDir
21- }
22- .map { it.trim() }
23-
24-
2513fun repo (path : String = "") = " https://github.com/ansman/auto-dagger$path "
2614
27- val remoteSource: Provider <String > = providers.gradleProperty(" version" )
28- .mapNullable { version -> version.takeUnless { it.endsWith(" -SNAPSHOT" ) } }
29- .orElse(gitCommit)
30- .map { repo(" /blob/$it " ) }
31-
32- dokka {
33- val projectPath = project.path.removePrefix(" :" ).replace(' :' , ' /' )
34- dokkaSourceSets.configureEach {
35- reportUndocumented.set(false )
36- sourceLink {
37- localDirectory.set(project.file(" src/main/kotlin" ))
38- remoteUrl.set(remoteSource.map { remoteSource ->
39- uri(" $remoteSource /$projectPath /src/main/kotlin" )
40- })
41- remoteLineSuffix.set(" #L" )
42- }
43- }
44- }
45-
4615tasks.withType<AbstractPublishToMaven >().configureEach {
4716 doLast {
4817 with (publication) {
@@ -51,60 +20,23 @@ tasks.withType<AbstractPublishToMaven>().configureEach {
5120 }
5221}
5322
54- val publishing: PublishingExtension = extensions.getByType()
23+ val signArtifacts = providers.gradleProperty(" signArtifacts" ).orNull?.toBooleanStrict() ? : false
24+ mavenPublishing {
25+ val version = providers.gradleProperty(" version" ).get()
26+ publishToMavenCentral(SonatypeHost .CENTRAL_PORTAL )
5527
56- with (publishing) {
57- repositories.maven {
58- name = " mavenCentral"
59- setUrl(" https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" )
60- credentials {
61- username = providers.gradleProperty(" sonatype.s01.oss.sonatype.org.username" )
62- .orElse(providers.environmentVariable(" SONATYPE_USERNAME" ))
63- .orNull
64- password = providers.gradleProperty(" sonatype.s01.oss.sonatype.org.password" )
65- .orElse(providers.environmentVariable(" SONATYPE_PASSWORD" ))
66- .orNull
67- }
28+ if (signArtifacts) {
29+ signAllPublications()
6830 }
6931
70- repositories.maven {
71- name = " sonatypeSnapshots"
72- setUrl(" https://s01.oss.sonatype.org/content/repositories/snapshots/" )
73- credentials {
74- username = providers.gradleProperty(" sonatype.s01.oss.sonatype.org.username" )
75- .orElse(providers.environmentVariable(" SONATYPE_USERNAME" ))
76- .orNull
77- password = providers.gradleProperty(" sonatype.s01.oss.sonatype.org.password" )
78- .orElse(providers.environmentVariable(" SONATYPE_PASSWORD" ))
79- .orNull
80- }
81- }
82- }
83-
84- tasks.register(" publishSnapshot" ) {
85- if (providers.gradleProperty(" version" ).get().endsWith(" -SNAPSHOT" )) {
86- dependsOn(" publishAllPublicationsToSonatypeSnapshotsRepository" )
87- }
88- }
89-
90- val javadocJar by tasks.registering(Jar ::class ) {
91- from(tasks.dokkaGeneratePublicationJavadoc)
92- archiveClassifier.set(" javadoc" )
93- }
94-
95- val sourcesJar by tasks.registering(Jar ::class ) {
96- archiveClassifier.set(" sources" )
97- }
98-
99- val publication = publishing.publications.register<MavenPublication >(" autoDagger" ) {
100- groupId = rootProject.group as String
101- artifactId = project.path
102- .removePrefix(" :third-party" )
103- .removePrefix(" :" )
104- .replace(' :' , ' -' )
105- version = providers.gradleProperty(" version" ).get()
106- artifact(sourcesJar)
107- artifact(javadocJar)
32+ coordinates(
33+ groupId = rootProject.group as String ,
34+ artifactId = project.path
35+ .removePrefix(" :third-party" )
36+ .removePrefix(" :" )
37+ .replace(' :' , ' -' ),
38+ version = version,
39+ )
10840 pom {
10941 val moduleName = project.path
11042 .removePrefix(" :third-party" )
@@ -137,81 +69,43 @@ val publication = publishing.publications.register<MavenPublication>("autoDagger
13769 }
13870}
13971
140-
141- if (findProperty(" signArtifacts" )?.toString()?.toBoolean() == true ) {
72+ if (signArtifacts) {
14273 signing {
14374 useGpgCmd()
144- sign(publication.get())
14575 }
14676}
14777
148- pluginManager.withPlugin(" com.android.library" ) {
149- extensions.configure<LibraryExtension > {
150- publishing {
151- singleVariant(" release" )
152- }
78+ tasks.register(" publishSnapshot" ) {
79+ if (providers.gradleProperty(" version" ).get().endsWith(" -SNAPSHOT" )) {
80+ dependsOn(" publishAllPublicationsToMavenCentralRepository" )
15381 }
82+ }
15483
155- publication {
156- afterEvaluate {
157- from(components[" release" ])
158- }
84+ pluginManager.withPlugin(" com.android.library" ) {
85+ mavenPublishing {
86+ configure(AndroidSingleVariantLibrary (sourcesJar = true , publishJavadocJar = false ))
15987 }
16088
161- sourcesJar {
162- // This is a "hack" to avoid Android from including generated sources
163- from(
164- files(" src/main" ).asFileTree.matching(
165- PatternSet ().include(
166- " **/*.java" ,
167- " **/*.kt" ,
168- )
169- )
170- )
89+ val javadocJar by tasks.registering(Jar ::class ) {
90+ from(tasks.dokkaGeneratePublicationJavadoc)
91+ archiveClassifier.set(" javadoc" )
17192 }
172- }
17393
174- pluginManager.withPlugin(" org.jetbrains.kotlin.jvm" ) {
175- publication {
176- afterEvaluate {
177- if (pluginManager.hasPlugin(" com.gradleup.shadow" )) {
178- from(components[" shadow" ])
179- } else {
180- from(components[" java" ])
181- }
94+ publishing {
95+ publications.withType<MavenPublication >().configureEach {
96+ artifact(javadocJar)
18297 }
18398 }
184-
185- sourcesJar {
186- dependsOn(" classes" )
187- from(project.extensions.getByType<SourceSetContainer >().getByName(" main" ).allSource)
188- }
18999}
190100
191- pluginManager.withPlugin(" com.gradleup.shadow" ) {
192- val compileShaded: Configuration by configurations.creating
193- configurations.named(" compileOnly" ) { extendsFrom(compileShaded) }
194- configurations.named(" testRuntimeOnly" ) { extendsFrom(compileShaded) }
195- configurations.named(" shadow" ) { extendsFrom(configurations[" implementation" ]) }
196-
197- // Since we change the classifier of the shadowJar we need to disable the default jar task or we'll get two
198- // artifacts that have the same classifier
199- tasks.named<Jar >(" jar" ) {
200- archiveClassifier.set(" ignored" )
201- }
202-
203- tasks.named<ShadowJar >(" shadowJar" ) {
204- archiveClassifier.set(" " )
205- configurations = listOf (compileShaded)
206- isEnableRelocation = true
207- relocationPrefix = " se.ansman.dagger.auto${project.path.replace(' :' , ' .' ).replace(' -' , ' _' )} "
208- mergeServiceFiles()
209- }
210-
211- pluginManager.withPlugin(" org.gradle.java-test-fixtures" ) {
212- configurations.named(" testFixturesImplementation" ) { extendsFrom(compileShaded) }
213- configurations.named(" testFixturesImplementation" ) { extendsFrom(configurations[" implementation" ]) }
214- configurations.named(" testFixturesApi" ) { extendsFrom(configurations[" api" ]) }
101+ pluginManager.withPlugin(" org.jetbrains.kotlin.jvm" ) {
102+ mavenPublishing {
103+ configure(
104+ KotlinJvm (
105+ javadocJar = JavadocJar .Dokka (tasks.dokkaGeneratePublicationJavadoc.name),
106+ sourcesJar = true
107+ )
108+ )
215109 }
216110}
217111
0 commit comments