В корне проекта settings.gradle:
rootProject.name = 'Gradle_Multiproject'
include 'main_project', 'library_project'
В папке /main_project файл build.gradle:
apply plugin: "java"
apply plugin: "application"
mainClassName = "com.example.Main"
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
repositories {
mavenCentral()
}
dependencies {
compile project(":library_project")
}
jar {
manifest.attributes("Main-Class": mainClassName);
}
task wrapper(type: Wrapper) {
gradleVersion = "1.12"
}
Main.java
package com.example;
import com.example.Simple;
public class Main {
public static void main(String[] args) {
System.out.println("main project");
Simple simple = new Simple();
}
}
В папке /library_project файл build.gradle:
apply plugin: "java"
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
Simple.java:
package com.example;
public class Simple {
private int value;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
Если сбилдить из корня gradle build, а затем из-под main_project запустить
java -jar build/libs/main_project.jar
то выйдет ошибка что класс Simple не найден.
Как тогда подключить классы из зависимого модуля, указанного в depencencies как compile project?
По дефолту таск jar не пакует зависимости в вашу jar. Вам нужно либо указать в classpath путь до library_project.jar, либо спаковать зависимости (это называется fat-jar) в main_project.jar. Это можно сделать так:
jar {
manifest.attributes("Main-Class": mainClassName);
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
http://www.baeldung.com/gradle-fat-jar
Сборка персонального компьютера от Artline: умный выбор для современных пользователей