簡単な例を作成しました(名前は実際には何の意味もありません):
フォルダ構造:
gradleMultiProject
build.gradle
core
build.gradle
src
main
java
Core.java
database
build.gradle
src
main
java
Database.java
settings.gradle
webapp
build.gradle
src
main
java
Webapp.java
以下は、上記のファイルです。
build.gradle (gradleMultiProject フォルダーの下のルート gradle ビルド ファイル)
subprojects {
apply plugin: 'java'
apply plugin: 'eclipse'
}
settings.gradle
include 'core', 'database', 'webapp'
gradleMultiProject\core\src\main\java\Core.java
package main.java;
public class Core
{
public static String HELLO_MESSAGE = "hello world!";
}
コアの build.gradle
task hello {
println "hello from core!"
}
gradleMultiProject\database\src\main\java\Database.java
package main.java;
public class Database
{
public void saveMessage()
{
System.out.println(Core.HELLO_MESSAGE);
}
}
データベースのbuild.gradle
dependencies {
compile project(':core')
}
gradleMultiProject\webapp\src\main\java
package main.java;
public class Webapp
{
public static void main(String[] args)
{
Database database = new Database();
database.saveMessage();
System.out.println(Core.HELLO_MESSAGE);
}
}
Webapp の build.gradle
dependencies {
compile project(':database')
}
Gradle はすべてを問題なくコンパイルします (gradle ビルド)。推移的な依存関係もうまくリストされています(gradle依存関係)。しかし、webapp プロジェクトの .classpath ファイル (gradle eclipseClasspath) を生成しようとすると、コアが含まれません。
どうして?!?!?!?!?!