Skip to content

Commit

Permalink
MavenCentral へ公開する処理がぶっ壊れてたので直した
Browse files Browse the repository at this point in the history
  • Loading branch information
takusan23 committed Mar 28, 2024
1 parent 6ca1a00 commit 54e1dd4
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 78 deletions.
4 changes: 4 additions & 0 deletions akari-core/CORE_RELEASE_NOTE.md
@@ -1,6 +1,10 @@
# akari-core リリースノート
更新忘れたらごめん

## 2.0.0 時代
- akaricore:2.0.0-alpha01
- 2.0.0 試験的公開

## 1.0.0 時代
作り直そうと思ったので、1系はこれが最後

Expand Down
133 changes: 62 additions & 71 deletions akari-core/build.gradle.kts
@@ -1,13 +1,20 @@
plugins {
id("com.android.library")
id("org.jetbrains.kotlin.android")
// ドキュメント生成
id("org.jetbrains.dokka")
// Maven Central に公開する際に利用
`maven-publish`
signing
}

// ライブラリ公開は Android でも言及するようになったので目を通すといいかも
// https://developer.android.com/build/publish-library/upload-library
// そのほか役に立ちそうなドキュメント
// https://docs.gradle.org/current/dsl/org.gradle.api.publish.maven.MavenPublication.html
// https://github.com/gradle-nexus/publish-plugin

// OSSRH にアップロードせずに成果物を確認する方法があります。ローカルに吐き出せばいい
// gradle :akari-core:publishToMavenLocal

android {
namespace = "io.github.takusan23.akaricore"
compileSdk = 34
Expand All @@ -33,6 +40,14 @@ android {
kotlinOptions {
jvmTarget = "1.8"
}

// どうやら Android Gradle Plugin 側で sources.jar と javadoc.jar を作る機能が実装されたそう
publishing {
singleVariant("release") {
withSourcesJar()
withJavadocJar()
}
}
}

// ライブラリ
Expand All @@ -47,6 +62,50 @@ dependencies {
androidTestImplementation(libs.androidx.test.espresso.core)
}

// ライブラリのメタデータ
publishing {
publications {
create<MavenPublication>("release") {
groupId = "io.github.takusan23"
artifactId = "akaricore"
version = "2.0.0-alpha01"

// afterEvaluate しないとエラーなる
afterEvaluate {
from(components["release"])
}

pom {
// ライブラリ情報
name.set("akaricore")
description.set("AkariDroid is Video editor app in Android. AkariDroid core library")
url.set("https://github.com/takusan23/AkariDroid/")
// ライセンス
licenses {
license {
name.set("Apache License 2.0")
url.set("https://github.com/takusan23/AkariDroid/blob/master/LICENSE")
}
}
// 開発者
developers {
developer {
id.set("takusan_23")
name.set("takusan_23")
url.set("https://takusan.negitoro.dev/")
}
}
// git
scm {
connection.set("scm:git:github.com/takusan23/AkariDroid")
developerConnection.set("scm:git:ssh://github.com/takusan23/AkariDroid")
url.set("https://github.com/takusan23/AkariDroid")
}
}
}
}
}

// 署名
signing {
// ルート build.gradle.kts の extra を見に行く
Expand All @@ -55,73 +114,5 @@ signing {
rootProject.extra["signing.key"] as String,
rootProject.extra["signing.password"] as String,
)
sign(publishing.publications)
}

// ソースコードを提供する
val androidSourcesJar = tasks.register<Jar>("androidSourcesJar") {
archiveClassifier.set("sources")
from(android.sourceSets["main"].java.srcDirs)
}

// JavaDoc を生成する
tasks.dokkaJavadoc {
outputDirectory.set(File(buildDir, "dokkaJavadoc"))
sign(publishing.publications["release"])
}
val javadocJar = tasks.register<Jar>("dokkaJavadocJar") {
dependsOn(tasks.dokkaJavadoc)
from(tasks.dokkaJavadoc.flatMap { it.outputDirectory })
archiveClassifier.set("javadoc")
}

artifacts {
archives(androidSourcesJar)
archives(javadocJar)
}

// ライブラリのメタデータ
afterEvaluate {
publishing {
publications {
create<MavenPublication>("release") {
groupId = "io.github.takusan23"
artifactId = "akaricore"
version = "2.0.0-alpha01"
if (project.plugins.hasPlugin("com.android.library")) {
from(components["release"])
} else {
from(components["java"])
}
artifact(androidSourcesJar)
artifact(javadocJar)
pom {
// ライブラリ情報
name.set("akaricore")
description.set("AkariDroid is Video editor app in Android. AkariDroid core library")
url.set("https://github.com/takusan23/AkariDroid/")
// ライセンス
licenses {
license {
name.set("Apache License 2.0")
url.set("https://github.com/takusan23/AkariDroid/blob/master/LICENSE")
}
}
// 開発者
developers {
developer {
id.set("takusan_23")
name.set("takusan_23")
url.set("https://takusan.negitoro.dev/")
}
}
// git
scm {
connection.set("scm:git:github.com/takusan23/AkariDroid")
developerConnection.set("scm:git:ssh://github.com/takusan23/AkariDroid")
url.set("https://github.com/takusan23/AkariDroid")
}
}
}
}
}
}
5 changes: 0 additions & 5 deletions build.gradle.kts
Expand Up @@ -5,11 +5,6 @@ plugins {
alias(libs.plugins.kotlin.android).apply(false)
// akaricore ライブラリ公開で使う
alias(libs.plugins.gradle.nexus.publish.plugin)
alias(libs.plugins.jetpbrains.dokka)
}

subprojects {
apply(plugin = "org.jetbrains.dokka")
}

tasks.register("clean") {
Expand Down
3 changes: 1 addition & 2 deletions gradle/libs.versions.toml
Expand Up @@ -21,8 +21,7 @@ android-application = { id = "com.android.application", version.ref = "androidGr
android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }

gradle-nexus-publish-plugin = { id = "io.github.gradle-nexus.publish-plugin", version = "1.0.0" }
jetpbrains-dokka = { id = "org.jetbrains.dokka", version = "1.7.20" }
gradle-nexus-publish-plugin = { id = "io.github.gradle-nexus.publish-plugin", version = "1.3.0" }

[libraries]
junit = { module = "junit:junit", version = "4.13.2" }
Expand Down

0 comments on commit 54e1dd4

Please sign in to comment.