同じ共通部品を何度も書いてるような気がする
この前もCSVとかXMLの読み込み作ったような気がするけどなんでまた作ってやがるんだこの俺は。ソースの資産化をちゃんとやってないのが悪い!
という事でちゃんと共通プロジェクトを作って、それを世界を汚さずローカルで完結させて再利用性を持たせたい!
それも手っ取り早く!
GitHubで公開してそれを取り込むというのをやっていたが、その前段階として公開するかしないか決めあぐねるような試験的なライブラリはローカルで完結させてしまえ、と。
ローカルにMVNリポジトリフォルダを作って、そこにpublishで突っ込めばよくね? という事でやってみた。
サブプロジェクト(取り込まれる側)
今回はE:/mvnrepo
にMVNのローカルリポジトリを作成する。
色々試したが絶対パスで作るほうが良さそう。環境変数を使って共通化させるのも良さそうだが、今回は仕組みの話なので直打ちのサンプルを乗っける。
plugins {
kotlin("jvm") version "1.6.10"
`java-library`
`maven-publish`
}
val artifact = "prunes"
group = "org.$artifact"
version = "1.0-SNAPSHOT"
publishing {
publications {
create<MavenPublication>("maven") {
from(components["kotlin"])
groupId = group as String
artifactId = artifact
version = version
}
}
repositories {
maven(url = "E:/mvnrepo")
}
}
これで./gradlew publish
とすれば、e:/mvnrepo/org/prunes/
に入っている。
クライアント(取り込む側)
plugins {
kotlin("jvm") version "1.6.10"
application
}
repositories {
maven(url = "E:/mvnrepo")
mavenCentral()
}
dependencies {
implementation("org.prunes:prunes:1.0-SNAPSHOT")
}
これでOKである。
intelliJの [File] -> [New] -> [Module from Existing Sources...]
でサブプロジェクトをモジュールとしてロードしてやると、同時に編集できて中々便利だ。
ローカルでお手軽に完結させて色々と拡張していって、ある程度形ができたら、じゃあ世界公開しようかなとかプライベート公開しようかなとか、ボツにしようかなとか、方向性を調整できる。
何度も何度も似たような形の車輪を発明し続けるのも疲れますよネ、というお話でございましたとさ。