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
2- import org.gradle.kotlin.dsl.registering
35
46plugins {
57 id(" yatagan.base-module" )
68 id(" org.jetbrains.dokka" )
79 id(" org.jetbrains.dokka-javadoc" )
8- `maven- publish`
9- signing
10+ id(" com.vanniktech.maven.publish" )
1011}
1112
1213val yataganVersion: String by extra
@@ -15,124 +16,55 @@ check(isValidSemVerString(yataganVersion)) {
1516 " `$yataganVersion ` is not a valid version"
1617}
1718
18- // For release publications
19- val mavenUrl: Provider <String > = providers.environmentVariable(" MAVEN_REPOSITORY_URL" )
20-
21- // For snapshot version publications
22- val mavenSnapshotUrl: Provider <String > = providers.environmentVariable(" MAVEN_REPOSITORY_SNAPSHOT_URL" )
23-
24- // maven username - must be valid both for snapshot and release repos.
25- // WARNING: For nexus (sonatype) publications, use NEXUS_USERNAME variable.
26- val mavenUsername: Provider <String > = providers.environmentVariable(" MAVEN_USERNAME" )
27-
28- // maven password - must be valid both for snapshot and release repos.
29- // WARNING: For nexus (sonatype) publications, use NEXUS_PASSWORD variable.
30- val mavenPassword: Provider <String > = providers.environmentVariable(" MAVEN_PASSWORD" )
31-
32- val signingKeyId: Provider <String > = providers.environmentVariable(" MAVEN_SIGNING_KEY_ID" )
33- val signingPassword: Provider <String > = providers.environmentVariable(" MAVEN_SIGNING_PASSWORD" )
34- val signingSecretKey: Provider <String > = providers.environmentVariable(" MAVEN_SIGNING_SECRET_KEYRING_FILE" )
35-
36- val isPublishToMavenEnabled = (mavenUrl.isPresent || mavenSnapshotUrl.isPresent)
37- && mavenUsername.isPresent && mavenPassword.isPresent
38-
39- java {
40- withSourcesJar()
41- }
42-
4319val artifactName = path.trim(' :' ).replace(' :' , ' -' )
4420
4521dokka {
4622 moduleName.set(artifactName)
4723}
4824
49- val javadocJar by tasks.registering(Jar ::class ) {
50- archiveClassifier.set(" javadoc" )
51- from(tasks.dokkaGeneratePublicationJavadoc.map { it.outputDirectory })
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- artifact(javadocJar)
63-
64- this .version = yataganVersion
65- this .groupId = " com.yandex.yatagan"
66- this .artifactId = artifactName
67-
68- pom {
69- name.set(" Yatagan" )
70- description.set(" Yatagan is a Dependency Injection framework, " +
71- " specializing on runtime performance and build speed. " +
72- " Supports code generation (apt/kapt/ksp) or reflection." )
73- url.set(" http://github.com/yandex/yatagan/" )
74-
75- licenses {
76- license {
77- name.set(" Apache License, version 2.0" )
78- url.set(" http://www.apache.org/licenses/LICENSE-2.0" )
79- distribution.set(" repo" )
80- }
81- }
82-
83- scm {
84- connection.set(" scm:git://github.com/yandex/yatagan.git" )
85- developerConnection.set(" scm:git://github.com/yandex/yatagan.git" )
86- url.set(" https://github.com/yandex/yatagan.git" )
87- }
88-
89- developers {
90- developer {
91- name.set(" Yandex LLC" )
92- url.set(" https://yandex.com" )
93- }
94- }
25+ mavenPublishing {
26+ publishToMavenCentral(host = SonatypeHost .DEFAULT )
27+ configure(KotlinJvm (
28+ javadocJar = JavadocJar .Dokka (tasks.dokkaGeneratePublicationJavadoc.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" )
9550 }
9651 }
97- }
9852
99- if (isPublishToMavenEnabled) {
100- repositories {
101- fun MavenArtifactRepository.setupCredentials () {
102- credentials {
103- username = mavenUsername.get()
104- password = mavenPassword.get()
105- }
106- }
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+ }
10758
108- val isSnapshotVersion = yataganVersion.endsWith(" SNAPSHOT" )
109- when {
110- ! isSnapshotVersion && mavenUrl.isPresent -> maven {
111- url = uri(mavenUrl.get())
112- setupCredentials()
113- }
114- isSnapshotVersion && mavenSnapshotUrl.isPresent -> maven {
115- url = uri(mavenSnapshotUrl.get())
116- setupCredentials()
117- }
59+ developers {
60+ developer {
61+ name.set(" Yandex LLC" )
62+ url.set(" https://yandex.com" )
11863 }
11964 }
12065 }
12166}
12267
123- if (signingKeyId.isPresent && signingPassword.isPresent && signingSecretKey.isPresent) {
124- signing {
125- sign(publishing.publications)
126- sign(configurations.archives.get())
127-
128- useInMemoryPgpKeys(
129- signingKeyId.get(),
130- signingSecretKey.get(),
131- signingPassword.get(),
132- )
133- }
134- }
135-
13668rootProject.tasks {
13769 // Every actual publish task must run after the root publish task, if any.
13870 findByName(" publish" )?.let { rootPublish ->
0 commit comments