1+ import com.vanniktech.maven.publish.JavadocJar
2+ import com.vanniktech.maven.publish.KotlinJvm
3+ import com.vanniktech.maven.publish.SonatypeHost
14import com.yandex.yatagan.gradle.isValidSemVerString
25import org.jetbrains.dokka.gradle.DokkaTask
36
47plugins {
58 id(" yatagan.base-module" )
69 id(" org.jetbrains.dokka" )
7- `maven- publish`
8- signing
10+ id(" com.vanniktech.maven.publish" )
911}
1012
1113val yataganVersion: String by extra
@@ -14,127 +16,55 @@ check(isValidSemVerString(yataganVersion)) {
1416 " `$yataganVersion ` is not a valid version"
1517}
1618
17- // For release publications
18- val mavenUrl: Provider <String > = providers.environmentVariable(" MAVEN_REPOSITORY_URL" )
19-
20- // For snapshot version publications
21- val mavenSnapshotUrl: Provider <String > = providers.environmentVariable(" MAVEN_REPOSITORY_SNAPSHOT_URL" )
22-
23- // maven username - must be valid both for snapshot and release repos.
24- // WARNING: For nexus (sonatype) publications, use NEXUS_USERNAME variable.
25- val mavenUsername: Provider <String > = providers.environmentVariable(" MAVEN_USERNAME" )
26-
27- // maven password - must be valid both for snapshot and release repos.
28- // WARNING: For nexus (sonatype) publications, use NEXUS_PASSWORD variable.
29- val mavenPassword: Provider <String > = providers.environmentVariable(" MAVEN_PASSWORD" )
30-
31- val signingKeyId: Provider <String > = providers.environmentVariable(" MAVEN_SIGNING_KEY_ID" )
32- val signingPassword: Provider <String > = providers.environmentVariable(" MAVEN_SIGNING_PASSWORD" )
33- val signingSecretKey: Provider <String > = providers.environmentVariable(" MAVEN_SIGNING_SECRET_KEYRING_FILE" )
34-
35- val isPublishToMavenEnabled = (mavenUrl.isPresent || mavenSnapshotUrl.isPresent)
36- && mavenUsername.isPresent && mavenPassword.isPresent
37-
38- java {
39- withSourcesJar()
40- }
41-
4219val artifactName = path.trim(' :' ).replace(' :' , ' -' )
4320
4421tasks.withType<DokkaTask >().configureEach {
4522 moduleName.set(artifactName)
4623}
4724
48- val javadocJar by tasks.creating(Jar ::class ) {
49- archiveClassifier.set(" javadoc" )
50- from(tasks.dokkaJavadoc.map { it.outputDirectory })
51- dependsOn(tasks.dokkaJavadoc)
52- }
53-
54- artifacts {
55- add(configurations.archives.name, javadocJar)
56- }
57-
58- publishing {
59- publications {
60- create<MavenPublication >(" main" ) {
61- from(components[" java" ])
62- tasks.findByName(" javadocJar" )?.let {
63- artifact(it)
64- }
65-
66- this .version = yataganVersion
67- this .groupId = " com.yandex.yatagan"
68- this .artifactId = artifactName
69-
70- pom {
71- name.set(" Yatagan" )
72- description.set(" Yatagan is a Dependency Injection framework, " +
73- " specializing on runtime performance and build speed. " +
74- " Supports code generation (apt/kapt/ksp) or reflection." )
75- url.set(" http://github.com/yandex/yatagan/" )
76-
77- licenses {
78- license {
79- name.set(" Apache License, version 2.0" )
80- url.set(" http://www.apache.org/licenses/LICENSE-2.0" )
81- distribution.set(" repo" )
82- }
83- }
84-
85- scm {
86- connection.set(" scm:git://github.com/yandex/yatagan.git" )
87- developerConnection.set(" scm:git://github.com/yandex/yatagan.git" )
88- url.set(" https://github.com/yandex/yatagan.git" )
89- }
90-
91- developers {
92- developer {
93- name.set(" Yandex LLC" )
94- url.set(" https://yandex.com" )
95- }
96- }
25+ mavenPublishing {
26+ publishToMavenCentral(host = SonatypeHost .CENTRAL_PORTAL )
27+ configure(KotlinJvm (
28+ javadocJar = JavadocJar .Dokka (tasks.dokkaJavadoc.name),
29+ sourcesJar = true ,
30+ ))
31+
32+ coordinates(
33+ groupId = " com.yandex.yatagan" ,
34+ artifactId = artifactName,
35+ version = yataganVersion,
36+ )
37+
38+ pom {
39+ name.set(" Yatagan" )
40+ description.set(" Yatagan is a Dependency Injection framework, " +
41+ " specializing on runtime performance and build speed. " +
42+ " Supports code generation (apt/kapt/ksp) or reflection." )
43+ url.set(" http://github.com/yandex/yatagan/" )
44+
45+ licenses {
46+ license {
47+ name.set(" Apache License, version 2.0" )
48+ url.set(" http://www.apache.org/licenses/LICENSE-2.0" )
49+ distribution.set(" repo" )
9750 }
9851 }
99- }
10052
101- if (isPublishToMavenEnabled) {
102- repositories {
103- fun MavenArtifactRepository.setupCredentials () {
104- credentials {
105- username = mavenUsername.get()
106- password = mavenPassword.get()
107- }
108- }
53+ scm {
54+ connection.set(" scm:git://github.com/yandex/yatagan.git" )
55+ developerConnection.set(" scm:git://github.com/yandex/yatagan.git" )
56+ url.set(" https://github.com/yandex/yatagan.git" )
57+ }
10958
110- val isSnapshotVersion = yataganVersion.endsWith(" SNAPSHOT" )
111- when {
112- ! isSnapshotVersion && mavenUrl.isPresent -> maven {
113- url = uri(mavenUrl.get())
114- setupCredentials()
115- }
116- isSnapshotVersion && mavenSnapshotUrl.isPresent -> maven {
117- url = uri(mavenSnapshotUrl.get())
118- setupCredentials()
119- }
59+ developers {
60+ developer {
61+ name.set(" Yandex LLC" )
62+ url.set(" https://yandex.com" )
12063 }
12164 }
12265 }
12366}
12467
125- if (signingKeyId.isPresent && signingPassword.isPresent && signingSecretKey.isPresent) {
126- signing {
127- sign(publishing.publications)
128- sign(configurations.archives.get())
129-
130- useInMemoryPgpKeys(
131- signingKeyId.get(),
132- signingSecretKey.get(),
133- signingPassword.get(),
134- )
135- }
136- }
137-
13868rootProject.tasks {
13969 // Every actual publish task must run after the root publish task, if any.
14070 findByName(" publish" )?.let { rootPublish ->
0 commit comments