Edited at

android kotlinアプリからkotlin libraryを切り出す

切り出したいなってなってから、ハマったので。



  • gradle init からkotlin library作る


  • Maven Publish Plugin を使い, ./gradlew publishToMavenLocal$HOME/.m2/repository/ 以下にpom, jarをつくる


  • https://bintray.com/USER_NAME/maven/PACKAGE_NAME にupload


  • maven { url 'https://dl.bintray.com/USER_NAME/maven' } で取得できる

GitHub repositoryにbuild artifact をcommitしない、の場合、ひとまずこれでよさそう。

いろいろ参考qiita見てたけど結局自分が何を設定しているかわからなくなったので、最小構成、default構成でいく。

gradleがglobalに入っていなければ入れる。Gradle | Installation でSDKMAN が一番上だったのでSDKMANでgradle 5.0入れた。なんもわからん。(なんだよsdkcommandって)


gradle init からkotlin library作る

gradle init で kotlin libraryを作っていく。file structureと、gradle wrapper commandなど作ってくれる。

あらかじめ温めておいたmethodを、Libraryの場所に置く。


Maven Publish Plugin を使い, ./gradlew publishToMavenLocal$HOME/.m2/repository/ 以下にpom, jarをつくる

// a part of build.gradle.kts

publishing {
publications {
create<MavenPublication>("maven") {
groupId = "jp.sane.numbertovietnamese"
artifactId = "numbertovietnamese"
version = "0.2.0"

from(components["java"])
}
}
}

~/.m2/repository 以下にpomとjarができる。android application側から、ここで

repositories {

mavenLocal()
}

参照できるようになる。android application側が動くぞってなったら次のstep。


https://bintray.com/USER_NAME/maven/PACKAGE_NAME にupload

~/.m2/repositoryに出来たkotlin libraryのjar, pomをhttps://bintray.com/USER_NAME/maven/PACKAGE_NAME にupload

jcenterへはまたあとで。


maven { url 'https://dl.bintray.com/USER_NAME/maven' } で取得できる

maven {

url 'https://dl.bintray.com/USER_NAME/maven'
}

ここで、mavenLocalからではなく、publicなところからlibraryを取得できるようになった。


依存よくわからない

これでいいんだろうか。kotlin-stdlib-jdk8 に依存するの??

\--- jp.sane.numbertovietnamese:numbertovietnamese:0.2.0

\--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.10
+--- org.jetbrains.kotlin:kotlin-stdlib:1.3.10 (*)
\--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.10 (*)


参照