Gradle でビルドするように再構成している (レガシー) Java プロジェクトがあります。ビルドは最終的に多数のjar
アーカイブを出力するはずなので、出力をアーカイブに分割することに対応するソース セットにソースを分割するようにしました。
ファイル ツリーは次のようになります。
- project root
- src
- setOne
- java
- ...
- resources
- ...
- setTwo
- java
- ...
- setThree
- java
- ...
- resources
- ...
- test
- java
- ...
- build.gradle
そして、build.gradle
私は次のものを持っています:
apply plugin: 'java'
sourceSets {
setOne
setTwo {
compileClasspath += setOne.output
}
setThree
test
}
dependencies {
setOne group: 'foo', name: 'bar', version: '1.0'
}
// Setup dependencies so that compileJava compiles all source sets
// while avoiding cyclic dependencies for main and test
sourceSets.matching { ss ->
!(ss.getName().contains('test') || ss.getName().contains('main'))
}.each { ss ->
compileJava.dependsOn ss.getCompileJavaTaskName()
}
これをビルドしようとすると、いくつかのクラスが解決されていないという警告がターゲットから大量に表示されます - にインポートされcompileSetTwoJava
たライブラリのクラスを参照しています。これは、Gradle が組み込みのクラスにしかアクセスできないためだと思いますが、プロセスでインポートされたクラスの依存関係を解決できないのはなぜですか?foobar
setOne
setTwo
setOne
setOne
これを正しく設定するにはどうすればよいですか?