gradleでマルチプロジェクトビルド

SVNから既存ソースを落としたらこんな階層になっていたと仮定します。

root - Asystem - trunk - AAA - src
   |               └ WebContent
   └ Bsystem - trunk - BBB - src
            |     └ WebContent
            └ CCC - WEB-INF - src

こんなのが20個ぐらいずらっと並んでいます。

さすがにローカルで全部動かすことはないのですが、ソースは一覧できるようにしたい。
IntelliJでソース見るだけで良ければrootから開けばいいだけなのですが、
ソースルートや依存関係は簡単に管理したい。

ということで、root以下をgradleプロジェクトにして、マルチプロジェクト管理をしてみました。

File -> New Project…で「Gradle」を選び、Project Locationにrootのフォルダを指定します。

settings.gradleを開き、以下のように設定します。

include 'Asystem:trunk:AAA', 'Bsystem:trunk:BBB', 'Bsystem:trunk:CCC'

:で区切ることで孫以下のプロジェクトをサブプロジェクトに指定できます。

サブプロジェクトに対する設定はbuild.gradleに対して以下のように行います。

subprojects {
    apply plugin: 'java'
    apply plugin: 'idea'
    repositories {
        mavenCentral()
    }

    sourceSets {
        main {
            java {
                srcDir 'src'
            }
            resources {
                srcDir 'WebContent'
            }
        }
    }

    dependencies {
        compile 'log4j:log4j:1.2.17'
        compile 'commons-logging:commons-logging:1.1.3'
        compile  'commons-lang:commons-lang:2.6'
    }

    // ↓文字エンコーディング指定
    def defaultEncoding = 'UTF-8'
    compileJava {
        options.encoding = defaultEncoding
    }
    compileTestJava {
        options.encoding = defaultEncoding
    }
}

project(':Bsystem:trunk:CCC') {
    sourceSets {
        main {
            java {
                srcDir 'WEB-INF/src'
            }
        }
    }
}

Gradleのデフォルトのプロジェクトレイアウトはsrc/main/javaなどなので、
それと異なる場合はsourceSetsで場所を指定します。

今回はCCCのみぜんぜん違う位置にあるためCCCはproject(‘:Bsystem:trunk:CCC’)以下で別途指定しています。

これで、20個近くあるプロジェクトのソースルートをほぼ一括で指定出来ました。
Ctrl+Nでの型検索もできるようになったので、検索も楽ちんです。
(本来の使い方と違うような気がしますがキニシナイキニシナイ)

コメント

タイトルとURLをコピーしました