Skip to content

Commit faa32f9

Browse files
authored
Fix jvm publication (#874)
* Change publication setup to be in line with other configurations * Use the base vanniktech plugin to solely rely on manual configuration and reorder and fix apply order * Apply the vanniktech plugin in all cases for local publishing * Optimize imports * Fix task dependency for signing task * Disable deployment of the ide plugin for now
1 parent 9279692 commit faa32f9

File tree

3 files changed

+41
-42
lines changed

3 files changed

+41
-42
lines changed

.github/workflows/deploy_jvm.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,8 @@ jobs:
132132
run: |
133133
modules/kotlin_jvm/kt/gradlew -p modules/kotlin_jvm/kt/ :godot-gradle-plugin:publish :godot-gradle-plugin:publishPlugins -Pgradle.publish.key=$GRADLE_PUBLISH_KEY -Pgradle.publish.secret=$GRADLE_PUBLISH_SECRET
134134
135-
- name: Deploy intellij plugin
136-
shell: sh
137-
run: |
138-
modules/kotlin_jvm/kt/gradlew -p modules/kotlin_jvm/kt/ :godot-intellij-plugin:publishPlugin
135+
# TODO: Re-enable once we fixed the findings by the plugin verification system
136+
# - name: Deploy intellij plugin
137+
# shell: sh
138+
# run: |
139+
# modules/kotlin_jvm/kt/gradlew -p modules/kotlin_jvm/kt/ :godot-intellij-plugin:publishPlugin

kt/build-logic/convention/src/main/kotlin/publish/PublishToMavenCentralPlugin.kt

Lines changed: 33 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,64 @@
1-
21
package publish
32

43
import com.vanniktech.maven.publish.MavenPublishBaseExtension
5-
import com.vanniktech.maven.publish.MavenPublishPlugin
4+
import com.vanniktech.maven.publish.MavenPublishBasePlugin
65
import com.vanniktech.maven.publish.SonatypeHost
76
import org.gradle.api.Plugin
87
import org.gradle.api.Project
9-
import org.gradle.api.plugins.JavaPluginExtension
108
import org.gradle.api.publish.PublishingExtension
119
import org.gradle.api.publish.maven.MavenPublication
1210
import org.gradle.plugins.signing.Sign
1311

1412
@Suppress("unused") // false positive
1513
class PublishToMavenCentralPlugin : Plugin<Project> {
1614
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)
1816

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
2423

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+
}
2643

27-
target.extensions.getByType(PublishingExtension::class.java).apply {
44+
target.afterEvaluate { evaluatedProject ->
45+
evaluatedProject.extensions.getByType(PublishingExtension::class.java).apply {
2846
publications { publicationContainer ->
2947
publicationContainer.all { publication ->
3048
if (publication is MavenPublication) {
3149
publication.groupId = "com.utopia-rise"
3250
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
3553

3654
publication.pom { mavenPom ->
3755
mavenPom.url.set("https://github.com/utopia-rise/godot-kotlin-jvm.git")
3856

3957
if (mavenPom.name.getOrElse("").isNullOrEmpty()) {
40-
mavenPom.name.set(target.name)
58+
mavenPom.name.set(evaluatedProject.name)
4159
}
4260
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")
4462
}
4563

4664
mavenPom.scm { mavenPomScm ->
@@ -89,27 +107,6 @@ class PublishToMavenCentralPlugin : Plugin<Project> {
89107
}
90108
}
91109
}
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-
}
113110
}
114111
}
115112
}

kt/common/build.gradle.kts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,16 @@ kotlin {
1818

1919
publishing {
2020
publications {
21-
@Suppress("UNUSED_VARIABLE")
21+
@Suppress("UNUSED_VARIABLE", "unused")
2222
val godotCommonGenerator by registering(MavenPublication::class) {
2323
pom {
2424
name.set(project.name)
2525
description.set("Godot common module other libraries.")
2626
}
2727
artifactId = project.name
2828
description = "Godot common module other libraries."
29-
from(components.getByName("java"))
29+
30+
from(components["java"])
3031
}
3132
}
3233
}

0 commit comments

Comments
 (0)