LoginSignup
1
0

More than 1 year has passed since last update.

【build.gradle.kts】共通プロジェクトをローカルのMavenリポジトリに置いて手っ取り早く扱う

Posted at

同じ共通部品を何度も書いてるような気がする

 この前もCSVとかXMLの読み込み作ったような気がするけどなんでまた作ってやがるんだこの俺は。ソースの資産化をちゃんとやってないのが悪い!

 という事でちゃんと共通プロジェクトを作って、それを世界を汚さずローカルで完結させて再利用性を持たせたい!

 それも手っ取り早く!

 GitHubで公開してそれを取り込むというのをやっていたが、その前段階として公開するかしないか決めあぐねるような試験的なライブラリはローカルで完結させてしまえ、と。

 ローカルにMVNリポジトリフォルダを作って、そこにpublishで突っ込めばよくね? という事でやってみた。

サブプロジェクト(取り込まれる側)

今回はE:/mvnrepoにMVNのローカルリポジトリを作成する。
色々試したが絶対パスで作るほうが良さそう。環境変数を使って共通化させるのも良さそうだが、今回は仕組みの話なので直打ちのサンプルを乗っける。

build.gradle.kts
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/に入っている。

クライアント(取り込む側)

build.gradle.kts
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...]でサブプロジェクトをモジュールとしてロードしてやると、同時に編集できて中々便利だ。

ローカルでお手軽に完結させて色々と拡張していって、ある程度形ができたら、じゃあ世界公開しようかなとかプライベート公開しようかなとか、ボツにしようかなとか、方向性を調整できる。

何度も何度も似たような形の車輪を発明し続けるのも疲れますよネ、というお話でございましたとさ。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0