Skip to content

Commit a78ec24

Browse files
committed
Adopt gradle-maven-publish-plugin
1 parent 31df6ac commit a78ec24

File tree

5 files changed

+117
-155
lines changed

5 files changed

+117
-155
lines changed

.github/workflows/ci.yaml

Lines changed: 41 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -32,25 +32,22 @@ jobs:
3232

3333
steps:
3434
- name: Checkout Project
35-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
35+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
3636

37-
- name: Validate Gradle Wrapper
38-
uses: gradle/actions/wrapper-validation@750cdda3edd6d51b7fdfc069d2e2818cf3c44f4c # v3.3.1
39-
40-
- uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1
37+
- uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
4138
with:
4239
path: |
4340
~/.konan
4441
key: "${{ runner.os }}-${{ hashFiles('**/.lock') }}"
4542

4643
- name: Setup JDK
47-
uses: actions/setup-java@9704b39bf258b59bc04b50fa2dd55e9ed76b47a8 # v4.1.0
44+
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
4845
with:
49-
distribution: temurin
50-
java-version: 8
46+
distribution: zulu
47+
java-version: 11
5148

5249
- name: Setup Gradle
53-
uses: gradle/actions/setup-gradle@750cdda3edd6d51b7fdfc069d2e2818cf3c44f4c # v3.3.1
50+
uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1
5451

5552
- name: Build with Gradle Wrapper
5653
run: ./gradlew ${{ matrix.tasks }}
@@ -66,63 +63,60 @@ jobs:
6663
include:
6764
- os: ubuntu-latest
6865
tasks: >
69-
publishAndroidNativeArm32PublicationToMavenRepository
70-
publishAndroidNativeArm64PublicationToMavenRepository
71-
publishAndroidNativeX64PublicationToMavenRepository
72-
publishAndroidNativeX86PublicationToMavenRepository
73-
publishJsPublicationToMavenRepository
74-
publishJvmPublicationToMavenRepository
75-
publishKotlinMultiplatformPublicationToMavenRepository
76-
publishLinuxArm64PublicationToMavenRepository
77-
publishLinuxX64PublicationToMavenRepository
78-
publishWasmJsPublicationToMavenRepository
66+
publishAndroidNativeArm32PublicationToMavenCentralRepository
67+
publishAndroidNativeArm64PublicationToMavenCentralRepository
68+
publishAndroidNativeX64PublicationToMavenCentralRepository
69+
publishAndroidNativeX86PublicationToMavenCentralRepository
70+
publishJsPublicationToMavenCentralRepository
71+
publishJvmPublicationToMavenCentralRepository
72+
publishKotlinMultiplatformPublicationToMavenCentralRepository
73+
publishLinuxArm64PublicationToMavenCentralRepository
74+
publishLinuxX64PublicationToMavenCentralRepository
75+
publishWasmJsPublicationToMavenCentralRepository
7976
8077
- os: windows-latest
81-
tasks: publishMingwX64PublicationToMavenRepository
78+
tasks: publishMingwX64PublicationToMavenCentralRepository
8279

8380
- os: macos-latest
8481
tasks: >
85-
publishIosArm64PublicationToMavenRepository
86-
publishIosSimulatorArm64PublicationToMavenRepository
87-
publishIosX64PublicationToMavenRepository
88-
publishMacosArm64PublicationToMavenRepository
89-
publishMacosX64PublicationToMavenRepository
90-
publishTvosArm64PublicationToMavenRepository
91-
publishTvosSimulatorArm64PublicationToMavenRepository
92-
publishTvosX64PublicationToMavenRepository
93-
publishWatchosArm32PublicationToMavenRepository
94-
publishWatchosArm64PublicationToMavenRepository
95-
publishWatchosDeviceArm64PublicationToMavenRepository
96-
publishWatchosSimulatorArm64PublicationToMavenRepository
97-
publishWatchosX64PublicationToMavenRepository
82+
publishIosArm64PublicationToMavenCentralRepository
83+
publishIosSimulatorArm64PublicationToMavenCentralRepository
84+
publishIosX64PublicationToMavenCentralRepository
85+
publishMacosArm64PublicationToMavenCentralRepository
86+
publishMacosX64PublicationToMavenCentralRepository
87+
publishTvosArm64PublicationToMavenCentralRepository
88+
publishTvosSimulatorArm64PublicationToMavenCentralRepository
89+
publishTvosX64PublicationToMavenCentralRepository
90+
publishWatchosArm32PublicationToMavenCentralRepository
91+
publishWatchosArm64PublicationToMavenCentralRepository
92+
publishWatchosDeviceArm64PublicationToMavenCentralRepository
93+
publishWatchosSimulatorArm64PublicationToMavenCentralRepository
94+
publishWatchosX64PublicationToMavenCentralRepository
9895
9996
steps:
10097
- name: Checkout Project
101-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
102-
103-
- name: Validate Gradle Wrapper
104-
uses: gradle/actions/wrapper-validation@750cdda3edd6d51b7fdfc069d2e2818cf3c44f4c # v3.3.1
98+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
10599

106-
- uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1
100+
- uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
107101
with:
108102
path: |
109103
~/.konan
110104
key: "${{ runner.os }}-${{ hashFiles('**/.lock') }}"
111105

112106
- name: Setup JDK
113-
uses: actions/setup-java@9704b39bf258b59bc04b50fa2dd55e9ed76b47a8 # v4.1.0
107+
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
114108
with:
115-
distribution: temurin
116-
java-version: 8
109+
distribution: zulu
110+
java-version: 11
117111

118112
- name: Setup Gradle
119-
uses: gradle/actions/setup-gradle@750cdda3edd6d51b7fdfc069d2e2818cf3c44f4c # v3.3.1
113+
uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1
120114

121115
- name: Publish with Gradle Wrapper
122116
run: ./gradlew ${{ matrix.tasks }}
123117
env:
124-
ORG_GRADLE_PROJECT_ossrhUsername: ${{ secrets.OSSRH_USERNAME }}
125-
ORG_GRADLE_PROJECT_ossrhPassword: ${{ secrets.OSSRH_PASSWORD }}
126-
ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.SIGNING_KEY_ID }}
127-
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.SIGNING_KEY }}
128-
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.SIGNING_PASSWORD }}
118+
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
119+
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
120+
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_KEY }}
121+
ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.SIGNING_KEY_ID }}
122+
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_KEY_PASSWORD }}

buildSrc/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ plugins {
44

55
dependencies {
66
implementation(libs.kotlin.gradle.plugin)
7+
implementation(libs.maven.publish.plugin)
78
}

buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl
2-
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
3-
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask
1+
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
2+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8
43

54
plugins {
65
kotlin("multiplatform")
@@ -9,9 +8,15 @@ plugins {
98
kotlin {
109
explicitApi()
1110

12-
jvmToolchain(8)
11+
compilerOptions {
12+
optIn.add("kotlin.contracts.ExperimentalContracts")
13+
}
1314

14-
jvm()
15+
jvm {
16+
compilerOptions {
17+
jvmTarget.set(JVM_1_8)
18+
}
19+
}
1520

1621
js(IR) {
1722
browser()
@@ -59,12 +64,6 @@ kotlin {
5964
watchosDeviceArm64()
6065

6166
sourceSets {
62-
all {
63-
languageSettings.apply {
64-
optIn("kotlin.contracts.ExperimentalContracts")
65-
}
66-
}
67-
6867
commonTest {
6968
dependencies {
7069
implementation(kotlin("test"))
@@ -90,13 +89,3 @@ tasks.withType<Jar> {
9089
into("META-INF")
9190
}
9291
}
93-
94-
/* https://youtrack.jetbrains.com/issue/KT-63014/Running-tests-with-wasmJs-in-1.9.20-requires-Chrome-Canary#focus=Comments-27-8321383.0-0 */
95-
rootProject.the<NodeJsRootExtension>().apply {
96-
nodeVersion = "21.0.0-v8-canary202309143a48826a08"
97-
nodeDownloadBaseUrl = "https://nodejs.org/download/v8-canary"
98-
}
99-
100-
rootProject.tasks.withType<KotlinNpmInstallTask> {
101-
args.add("--ignore-engines")
102-
}
Lines changed: 60 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,108 +1,82 @@
1+
import com.vanniktech.maven.publish.JavadocJar
2+
import com.vanniktech.maven.publish.KotlinMultiplatform
3+
14
plugins {
2-
`maven-publish`
3-
signing
5+
id("com.vanniktech.maven.publish")
46
}
57

6-
publishing {
7-
repositories {
8-
maven {
9-
if (project.version.toString().endsWith("SNAPSHOT")) {
10-
setUrl("https://oss.sonatype.org/content/repositories/snapshots")
11-
} else {
12-
setUrl("https://oss.sonatype.org/service/local/staging/deploy/maven2")
8+
mavenPublishing {
9+
publishToMavenCentral()
10+
signAllPublications()
11+
12+
configure(
13+
KotlinMultiplatform(
14+
javadocJar = JavadocJar.Empty(),
15+
sourcesJar = true,
16+
)
17+
)
18+
19+
pom {
20+
name.set(project.name)
21+
description.set(project.description)
22+
url.set("https://github.com/michaelbull/kotlin-retry")
23+
inceptionYear.set("2019")
24+
25+
licenses {
26+
license {
27+
name.set("ISC License")
28+
url.set("https://opensource.org/licenses/isc-license.txt")
1329
}
30+
}
1431

15-
credentials {
16-
val ossrhUsername: String? by project
17-
val ossrhPassword: String? by project
18-
19-
username = ossrhUsername
20-
password = ossrhPassword
32+
developers {
33+
developer {
34+
name.set("Michael Bull")
35+
url.set("https://www.michael-bull.com")
2136
}
2237
}
23-
}
24-
25-
publications.withType<MavenPublication> {
26-
val targetName = this@withType.name
2738

28-
artifact(tasks.register("${targetName}JavadocJar", Jar::class) {
29-
group = LifecycleBasePlugin.BUILD_GROUP
30-
description = "Assembles a jar archive containing the Javadoc API documentation of target '$targetName'."
31-
archiveClassifier.set("javadoc")
32-
archiveAppendix.set(targetName)
33-
})
34-
35-
pom {
36-
name.set(project.name)
37-
description.set(project.description)
38-
url.set("https://github.com/michaelbull/kotlin-retry")
39-
inceptionYear.set("2019")
40-
41-
licenses {
42-
license {
43-
name.set("ISC License")
44-
url.set("https://opensource.org/licenses/isc-license.txt")
45-
}
39+
contributors {
40+
contributor {
41+
name.set("Nicolas Dermine")
42+
url.set("https://github.com/nicoder")
4643
}
4744

48-
developers {
49-
developer {
50-
name.set("Michael Bull")
51-
url.set("https://www.michael-bull.com")
52-
}
45+
contributor {
46+
name.set("Thorsten Hake")
47+
url.set("http://www.thorsten-hake.com/")
5348
}
5449

55-
contributors {
56-
contributor {
57-
name.set("Nicolas Dermine")
58-
url.set("https://github.com/nicoder")
59-
}
60-
61-
contributor {
62-
name.set("Thorsten Hake")
63-
url.set("http://www.thorsten-hake.com/")
64-
}
65-
66-
contributor {
67-
name.set("gnefedev")
68-
url.set("https://github.com/gnefedev")
69-
}
70-
71-
contributor {
72-
name.set("cherrydev")
73-
url.set("https://github.com/cherrydev")
74-
}
75-
76-
contributor {
77-
name.set("Joose Fjällström")
78-
url.set("https://github.com/jfjallstrom")
79-
}
50+
contributor {
51+
name.set("gnefedev")
52+
url.set("https://github.com/gnefedev")
8053
}
8154

82-
scm {
83-
connection.set("scm:git:https://github.com/michaelbull/kotlin-retry")
84-
developerConnection.set("scm:git:git@github.com:michaelbull/kotlin-retry.git")
85-
url.set("https://github.com/michaelbull/kotlin-retry")
55+
contributor {
56+
name.set("cherrydev")
57+
url.set("https://github.com/cherrydev")
8658
}
8759

88-
issueManagement {
89-
system.set("GitHub Issues")
90-
url.set("https://github.com/michaelbull/kotlin-retry/issues")
60+
contributor {
61+
name.set("Joose Fjällström")
62+
url.set("https://github.com/jfjallstrom")
9163
}
64+
}
9265

93-
ciManagement {
94-
system.set("GitHub Actions")
95-
url.set("https://github.com/michaelbull/kotlin-retry/actions")
96-
}
66+
scm {
67+
connection.set("scm:git:https://github.com/michaelbull/kotlin-retry")
68+
developerConnection.set("scm:git:git@github.com:michaelbull/kotlin-retry.git")
69+
url.set("https://github.com/michaelbull/kotlin-retry")
9770
}
98-
}
99-
}
10071

101-
signing {
102-
val signingKeyId: String? by project // must be the last 8 digits of the key
103-
val signingKey: String? by project
104-
val signingPassword: String? by project
72+
issueManagement {
73+
system.set("GitHub Issues")
74+
url.set("https://github.com/michaelbull/kotlin-retry/issues")
75+
}
10576

106-
useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword)
107-
sign(publishing.publications)
77+
ciManagement {
78+
system.set("GitHub Actions")
79+
url.set("https://github.com/michaelbull/kotlin-retry/actions")
80+
}
81+
}
10882
}

gradle/libs.versions.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,17 @@ kotlin-coroutines = "1.10.2"
44
kotlin-result = "2.1.0"
55
mockk = "1.13.10"
66
versions-plugin = "0.52.0"
7+
maven-publish-plugin = "0.34.0"
78

89
[libraries]
9-
kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
1010
kotlin-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlin-coroutines" }
1111
kotlin-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlin-coroutines" }
1212
kotlin-result = { module = "com.michael-bull.kotlin-result:kotlin-result", version.ref = "kotlin-result" }
1313
mockk = { module = "io.mockk:mockk", version.ref = "mockk" }
1414

15+
# buildSrc subproject
16+
kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
17+
maven-publish-plugin = { module = "com.vanniktech.maven.publish:com.vanniktech.maven.publish.gradle.plugin", version.ref = "maven-publish-plugin" }
18+
1519
[plugins]
1620
versions = { id = "com.github.ben-manes.versions", version.ref = "versions-plugin" }

0 commit comments

Comments
 (0)