Skip to content

Commit c222b78

Browse files
committed
Added publishing to Maven Central
1 parent 86fd281 commit c222b78

File tree

71 files changed

+581
-453
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+581
-453
lines changed

.github/workflows/publish.yaml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: Publish Artifacts
2+
on: workflow_dispatch
3+
jobs:
4+
build:
5+
name: Build
6+
runs-on: macos-latest
7+
steps:
8+
- name: Checkout code
9+
uses: actions/checkout@v4
10+
11+
- name: Setup Java
12+
uses: actions/setup-java@v4
13+
with:
14+
distribution: 'zulu'
15+
java-version: '17'
16+
17+
- name: Install GPG
18+
env:
19+
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
20+
run: |
21+
brew install gpg
22+
echo "$SIGNING_KEY" | gpg --dearmor > ${HOME}/secring.gpg
23+
24+
- name: Setup Gradle
25+
uses: gradle/actions/setup-gradle@v3
26+
27+
- name: Setup Xcode
28+
uses: maxim-lobanov/setup-xcode@v1
29+
with:
30+
xcode-version: latest-stable
31+
32+
- name: Publish To Maven Central
33+
env:
34+
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
35+
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
36+
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
37+
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
38+
run: |
39+
chmod 777 ./gradlew
40+
./gradlew soundfont:publishAndReleaseToMavenCentral --no-configuration-cache
41+
./gradlew midi:publishAndReleaseToMavenCentral --no-configuration-cache

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ To add library to Your project paste the following snippet in your TOML file.
4242
mikrosoundfont = "<latest_version>"
4343
4444
[libraries]
45-
mikrosoundfont-midi = { module = "pl.lemanski.mikrosoundfont:midi", version.ref = "mikrosoundfont" }
46-
mikrosoundfont-soundFont = { module = "pl.lemanski.mikrosoundfont:soundFont", version.ref = "mikrosoundfont" }
45+
mikrosoundfont-midi = { module = "io.github.lemcoder.mikroSoundFont:midi", version.ref = "mikrosoundfont" }
46+
mikrosoundfont-soundFont = { module = "io.github.lemcoder.mikroSoundFont:soundFont", version.ref = "mikrosoundfont" }
4747
```
4848
___
4949
### Usage

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
plugins {
22
alias(libs.plugins.kotlinMultiplatform).apply(false)
33
alias(libs.plugins.androidLibrary).apply(false)
4+
alias(libs.plugins.maven.publish).apply(false)
45
}

gradle.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ android.useAndroidX=true
66

77
#Kotlin
88
kotlin.code.style=official
9-
kotlin.mpp.enableCInteropCommonization=true
9+
kotlin.mpp.enableCInteropCommonization=true
10+
kotlin.native.enableKlibsCrossCompilation=true

gradle/libs.versions.toml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
[versions]
2-
soundFont = "0.1.3"
3-
midi = "0.1.3"
2+
lib = "0.1.5"
43

54
agp = "8.7.2"
6-
kotlin = "2.0.20"
7-
kotlinxIo = "0.5.1"
5+
kotlin = "2.1.0"
6+
kotlinxIo = "0.5.4"
87

98
android-runner = "1.6.2"
109
rules = "1.6.1"
1110

1211
android-compileSdk = "34"
1312
android-minSdk = "24"
13+
maven-publish = "0.28.0"
1414

1515
[libraries]
1616
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" }
@@ -20,4 +20,5 @@ test-rules = { group = "androidx.test", name = "rules", version.ref = "rules" }
2020

2121
[plugins]
2222
kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
23-
androidLibrary = { id = "com.android.library", version.ref = "agp" }
23+
androidLibrary = { id = "com.android.library", version.ref = "agp" }
24+
maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "maven-publish" }

midi/build.gradle.kts

Lines changed: 77 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
1-
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
1+
import com.vanniktech.maven.publish.SonatypeHost
22

33
plugins {
44
alias(libs.plugins.kotlinMultiplatform)
55
alias(libs.plugins.androidLibrary)
6-
id("maven-publish")
6+
alias(libs.plugins.maven.publish)
7+
`maven-publish`
8+
signing
79
}
810

9-
group = "pl.lemanski.mikrosoundfont"
10-
version = libs.versions.midi.get().toString()
11+
group = "io.github.lemcoder.mikroSoundFont"
12+
version = libs.versions.lib.get().toString()
1113

1214
android {
13-
namespace = "pl.lemanski.mikroSoundFont"
15+
namespace = "io.github.lemcoder.mikroSoundFont"
1416
defaultConfig {
1517
compileSdk = libs.versions.android.compileSdk.get().toInt()
1618
minSdk = libs.versions.android.minSdk.get().toInt()
@@ -31,18 +33,29 @@ kotlin {
3133
publishLibraryVariants("release")
3234
}
3335

34-
mingwX64()
35-
linuxX64()
36+
listOf(
37+
mingwX64(),
38+
linuxX64(),
39+
iosArm64(),
40+
iosSimulatorArm64(),
41+
iosX64(),
42+
macosArm64(),
43+
macosX64()
44+
)
45+
iosArm64()
46+
iosSimulatorArm64()
47+
iosX64()
48+
macosArm64()
49+
macosX64()
3650

37-
@OptIn(ExperimentalKotlinGradlePluginApi::class)
3851
compilerOptions {
3952
freeCompilerArgs.add("-Xexpect-actual-classes")
4053
}
4154

4255
sourceSets {
4356

4457
commonMain.dependencies {
45-
implementation(projects.soundFont)
58+
implementation(projects.soundfont)
4659
implementation(libs.kotlinx.io)
4760
}
4861

@@ -57,8 +70,63 @@ kotlin {
5770
}
5871
}
5972

73+
// Publishing
74+
6075
publishing {
6176
repositories {
6277
mavenLocal()
6378
}
79+
}
80+
81+
mavenPublishing {
82+
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
83+
84+
coordinates(
85+
groupId = group.toString(),
86+
artifactId = "midi",
87+
version = version.toString()
88+
)
89+
90+
println(SonatypeHost.DEFAULT.toString())
91+
92+
pom {
93+
name.set("MikroSoundFont")
94+
description.set("Kotlin Multiplatform library for sample-based synthesis to play MIDI files.")
95+
inceptionYear.set("2024")
96+
url.set("https://github.com/lemcoder/MikroSoundFont")
97+
98+
licenses {
99+
license {
100+
name.set("Apache-2.0 license")
101+
url.set("https://www.apache.org/licenses/LICENSE-2.0")
102+
}
103+
}
104+
105+
developers {
106+
developer {
107+
id.set("lemcoder")
108+
name.set("Mikołaj Lemański")
109+
email.set("[email protected]")
110+
}
111+
}
112+
113+
scm {
114+
url.set("https://github.com/lemcoder/MikroSoundFont")
115+
}
116+
}
117+
}
118+
119+
// Sign with default plugin
120+
signing {
121+
useInMemoryPgpKeys(
122+
System.getenv("SIGNING_KEY"),
123+
System.getenv("SIGNING_KEY_PASSWORD")
124+
)
125+
sign(publishing.publications)
126+
127+
// Temporary workaround, see https://github.com/gradle/gradle/issues/26091#issuecomment-1722947958
128+
tasks.withType<AbstractPublishToMaven>().configureEach {
129+
val signingTasks = tasks.withType<Sign>()
130+
mustRunAfter(signingTasks)
131+
}
64132
}

midi/src/androidInstrumentedTest/kotlin/pl/lemanski/mikroSoundFont/io/FileTest.kt renamed to midi/src/androidInstrumentedTest/kotlin/io/github/lemcoder/mikrosoundfont/io/FileTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package pl.lemanski.mikroSoundFont.io
1+
package io.github.lemcoder.mikrosoundfont.io
22

33
import org.junit.Assert.assertTrue
44
import org.junit.Test

midi/src/androidInstrumentedTest/kotlin/pl/lemanski/mikroSoundFont/io/midi/MidiFileHeaderTest.kt renamed to midi/src/androidInstrumentedTest/kotlin/io/github/lemcoder/mikrosoundfont/io/midi/MidiFileHeaderTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package pl.lemanski.mikroSoundFont.io.midi
1+
package io.github.lemcoder.mikrosoundfont.io.midi
22

33
import junit.framework.TestCase.assertEquals
44
import junit.framework.TestCase.assertTrue
55
import org.junit.Test
6-
import pl.lemanski.mikroSoundFont.InvalidMidiDataException
6+
import io.github.lemcoder.mikrosoundfont.InvalidMidiDataException
77

88
@OptIn(ExperimentalStdlibApi::class)
99
class MidiFileHeaderTest {

midi/src/androidInstrumentedTest/kotlin/pl/lemanski/mikroSoundFont/io/midi/message/BufferExtTest.kt renamed to midi/src/androidInstrumentedTest/kotlin/io/github/lemcoder/mikrosoundfont/io/midi/message/BufferExtTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
package pl.lemanski.mikroSoundFont.io.midi.message
1+
package io.github.lemcoder.mikrosoundfont.io.midi.message
22

33
import junit.framework.TestCase.assertEquals
44
import junit.framework.TestCase.assertTrue
55
import kotlinx.io.Buffer
66
import kotlinx.io.readByteArray
77
import org.junit.Test
8-
import pl.lemanski.mikroSoundFont.InvalidMidiDataException
8+
import io.github.lemcoder.mikrosoundfont.InvalidMidiDataException
99

1010
class BufferExtTest {
1111

midi/src/androidInstrumentedTest/kotlin/pl/lemanski/mikroSoundFont/midi/MidiTest.kt renamed to midi/src/androidInstrumentedTest/kotlin/io/github/lemcoder/mikrosoundfont/midi/MidiTest.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package pl.lemanski.mikroSoundFont.midi
1+
package io.github.lemcoder.mikrosoundfont.midi
22

33
import android.Manifest
44
import android.os.Environment
@@ -7,12 +7,12 @@ import androidx.test.platform.app.InstrumentationRegistry
77
import androidx.test.rule.GrantPermissionRule
88
import org.junit.Rule
99
import org.junit.Test
10-
import pl.lemanski.mikroSoundFont.MikroSoundFont
11-
import pl.lemanski.mikroSoundFont.io.midi.MidiFileParser
12-
import pl.lemanski.mikroSoundFont.io.saveFile
13-
import pl.lemanski.mikroSoundFont.io.toByteArrayLittleEndian
14-
import pl.lemanski.mikroSoundFont.io.wav.WavFileHeader
15-
import pl.lemanski.mikroSoundFont.io.wav.toByteArray
10+
import io.github.lemcoder.mikrosoundfont.MikroSoundFont
11+
import io.github.lemcoder.mikrosoundfont.io.midi.MidiFileParser
12+
import io.github.lemcoder.mikrosoundfont.io.saveFile
13+
import io.github.lemcoder.mikrosoundfont.io.toByteArrayLittleEndian
14+
import io.github.lemcoder.mikrosoundfont.io.wav.WavFileHeader
15+
import io.github.lemcoder.mikrosoundfont.io.wav.toByteArray
1616
import java.io.File
1717

1818

0 commit comments

Comments
 (0)