|
1 | | - |
2 | 1 | package publish |
3 | 2 |
|
4 | 3 | import com.vanniktech.maven.publish.MavenPublishBaseExtension |
5 | | -import com.vanniktech.maven.publish.MavenPublishPlugin |
| 4 | +import com.vanniktech.maven.publish.MavenPublishBasePlugin |
6 | 5 | import com.vanniktech.maven.publish.SonatypeHost |
7 | 6 | import org.gradle.api.Plugin |
8 | 7 | import org.gradle.api.Project |
9 | | -import org.gradle.api.plugins.JavaPluginExtension |
10 | 8 | import org.gradle.api.publish.PublishingExtension |
11 | 9 | import org.gradle.api.publish.maven.MavenPublication |
12 | 10 | import org.gradle.plugins.signing.Sign |
13 | 11 |
|
14 | 12 | @Suppress("unused") // false positive |
15 | 13 | class PublishToMavenCentralPlugin : Plugin<Project> { |
16 | 14 | override fun apply(target: Project) { |
17 | | - target.plugins.apply(org.gradle.api.publish.maven.plugins.MavenPublishPlugin::class.java) |
| 15 | + target.pluginManager.apply(MavenPublishBasePlugin::class.java) |
18 | 16 |
|
19 | | - target.afterEvaluate { evaluatedProject -> |
20 | | - val mavenCentralUser = target.propOrEnv("ORG_GRADLE_PROJECT_mavenCentralUsername") ?: target.propOrEnv("mavenCentralUsername") |
21 | | - val mavenCentralPassword = target.propOrEnv("ORG_GRADLE_PROJECT_mavenCentralPassword") ?: target.propOrEnv("mavenCentralPassword") |
22 | | - val gpgInMemoryKey = target.propOrEnv("ORG_GRADLE_PROJECT_signingInMemoryKey") ?: target.propOrEnv("signingInMemoryKey") |
23 | | - val gpgPassword = target.propOrEnv("ORG_GRADLE_PROJECT_signingInMemoryKeyPassword") ?: target.propOrEnv("signingInMemoryKeyPassword") |
| 17 | + val mavenCentralUser = target.propOrEnv("ORG_GRADLE_PROJECT_mavenCentralUsername") ?: target.propOrEnv("mavenCentralUsername") |
| 18 | + val mavenCentralPassword = target.propOrEnv("ORG_GRADLE_PROJECT_mavenCentralPassword") ?: target.propOrEnv("mavenCentralPassword") |
| 19 | + val gpgInMemoryKey = target.propOrEnv("ORG_GRADLE_PROJECT_signingInMemoryKey") ?: target.propOrEnv("signingInMemoryKey") |
| 20 | + val gpgPassword = target.propOrEnv("ORG_GRADLE_PROJECT_signingInMemoryKeyPassword") ?: target.propOrEnv("signingInMemoryKeyPassword") |
| 21 | + |
| 22 | + val canSign = mavenCentralUser != null && mavenCentralPassword != null && gpgInMemoryKey != null && gpgPassword != null |
24 | 23 |
|
25 | | - val canSign = mavenCentralUser != null && mavenCentralPassword != null && gpgInMemoryKey != null && gpgPassword != null |
| 24 | + if (canSign) { |
| 25 | + target.logger.info("Will sign artifact for project \"${target.name}\" and setup publishing") |
| 26 | + |
| 27 | + target.extensions.getByType(MavenPublishBaseExtension::class.java).apply { |
| 28 | + publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL) |
| 29 | + signAllPublications() |
| 30 | + } |
| 31 | + |
| 32 | + target.afterEvaluate { evaluatedProject -> |
| 33 | + evaluatedProject |
| 34 | + .tasks |
| 35 | + .filter { task -> task.name.startsWith("publish") } |
| 36 | + .forEach { task -> |
| 37 | + task.dependsOn(target.tasks.withType(Sign::class.java)) |
| 38 | + } |
| 39 | + } |
| 40 | + } else { |
| 41 | + target.logger.warn("Cannot sign project \"${target.name}\" as credentials are missing. Will not setup signing and remote publishing credentials. Publishing will only work to maven local!") |
| 42 | + } |
26 | 43 |
|
27 | | - target.extensions.getByType(PublishingExtension::class.java).apply { |
| 44 | + target.afterEvaluate { evaluatedProject -> |
| 45 | + evaluatedProject.extensions.getByType(PublishingExtension::class.java).apply { |
28 | 46 | publications { publicationContainer -> |
29 | 47 | publicationContainer.all { publication -> |
30 | 48 | if (publication is MavenPublication) { |
31 | 49 | publication.groupId = "com.utopia-rise" |
32 | 50 | val artifactId = publication.artifactId |
33 | | - publication.artifactId = if (artifactId.isNullOrEmpty()) target.name else artifactId |
34 | | - publication.version = target.version as String |
| 51 | + publication.artifactId = if (artifactId.isNullOrEmpty()) evaluatedProject.name else artifactId |
| 52 | + publication.version = evaluatedProject.version as String |
35 | 53 |
|
36 | 54 | publication.pom { mavenPom -> |
37 | 55 | mavenPom.url.set("https://github.com/utopia-rise/godot-kotlin-jvm.git") |
38 | 56 |
|
39 | 57 | if (mavenPom.name.getOrElse("").isNullOrEmpty()) { |
40 | | - mavenPom.name.set(target.name) |
| 58 | + mavenPom.name.set(evaluatedProject.name) |
41 | 59 | } |
42 | 60 | if (mavenPom.description.getOrElse("").isNullOrEmpty()) { |
43 | | - mavenPom.description.set(target.description ?: "Godot kotlin jvm module") |
| 61 | + mavenPom.description.set(evaluatedProject.description ?: "Godot kotlin jvm module") |
44 | 62 | } |
45 | 63 |
|
46 | 64 | mavenPom.scm { mavenPomScm -> |
@@ -89,27 +107,6 @@ class PublishToMavenCentralPlugin : Plugin<Project> { |
89 | 107 | } |
90 | 108 | } |
91 | 109 | } |
92 | | - |
93 | | - if (canSign) { |
94 | | - evaluatedProject.logger.info("Will sign artifact for project \"${evaluatedProject.name}\" and setup publishing") |
95 | | - |
96 | | - evaluatedProject.pluginManager.apply(MavenPublishPlugin::class.java) |
97 | | - evaluatedProject.extensions.getByType(MavenPublishBaseExtension::class.java).apply { |
98 | | - publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL) |
99 | | - signAllPublications() |
100 | | - } |
101 | | - |
102 | | - target.afterEvaluate { |
103 | | - target |
104 | | - .tasks |
105 | | - .filter { task -> task.name.startsWith("publish") } |
106 | | - .forEach { task -> |
107 | | - task.dependsOn(target.tasks.withType(Sign::class.java)) |
108 | | - } |
109 | | - } |
110 | | - } else { |
111 | | - evaluatedProject.logger.warn("Cannot sign project \"${evaluatedProject.name}\" as credentials are missing. Will not setup signing and remote publishing credentials. Publishing will only work to maven local!") |
112 | | - } |
113 | 110 | } |
114 | 111 | } |
115 | 112 | } |
|
0 commit comments