现在开始创建一个多模块的项目,打包并运行。
首先,先建一个根据上篇的说明建好项目。
分别建两个子模块(即目录):dao和service
分别在这两个目录中建好java格式的代码目录:
dao/src/main/java/com/sample/dao
service/src/amin/java/com/sample/service
s
目录建好后,开始写代码:
在dao/src/main/java/com/sample/dao下新建:User.java
在service/src/amin/java/com/sample/service下新建:UserService.java
package com.sample.dao;
public class User{
private Integer id;
private String name;
public void setId(Integer value){id = value;}
public Integer getId(){return id;}
public void setName(String value){name = value;}
public String getName(){return name;}
public String toString(){return id+" -> " + name;}
}
package com.sample.service;
import com.sample.dao.User;
public class UserService{
public User getUser(){
User user = new User();
user.setId(1);
user.setName("service zz");
return user;
}
}
在主类中调用建好的模块:
package com.sample;
import com.sample.dao.User;
import com.sample.service.UserService;
public class App {
public String getGreeting() {
return "Hello world.";
}
public static void main(String[] args) {
System.out.println(new App().getGreeting());
UserService userService = new UserService();
User user = userService.getUser();
System.out.println(user);
}
}
然后开始配置项目
分别在 dao和service模块目录中新建文件:build.gradle
dao的配置文件
文件内容:说明下子模块是java的项目
plugins {
id 'java'
}
service的配置文件
plugins {
id 'java'
}
sourceSets {
main {
java {
// 依赖的项目dao
srcDirs = ['dao/src/main/java']
}
}
}
然后关联模块之间的关联关系:
主模块依赖: dao和service,编辑settings.gradle
rootProject.name = 'gradle_sample'
include 'dao'
include 'service'
service模块依赖:dao,添加文件settings.gradle
include 'dao'
最后配置下主模块的build.gradle:
plugins {
// Apply the java plugin to add support for Java
id 'java'
// Apply the application plugin to add support for building a CLI application.
id 'application'
}
repositories {
// Use jcenter for resolving dependencies.
// You can declare any Maven/Ivy/file repository here.
jcenter()
}
dependencies {
// This dependency is used by the application.
implementation 'com.google.guava:guava:28.2-jre'
// Use JUnit Jupiter API for testing.
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
// Use JUnit Jupiter Engine for testing.
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.0'
// 主模块依赖这两个项目
compile project(":dao")
compile project(":service")
}
application {
// Define the main class for the application.
mainClassName = 'com.sample.App'
}
test {
// Use junit platform for unit tests
useJUnitPlatform()
}
// 说明各模块的代码目录
sourceSets {
main {
java {
srcDirs = ['src/main/java','dao/src/main/java','service/src/main/java']
}
}
}
jar {
manifest {
// 打包时指定入口
attributes 'Main-Class': 'com.sample.App'
}
}
注意:如果不写sourceSets的话,打包jar后执行会报:找不到引用模块的类
现在可以执行下看结果:
gradle run
打包:
gradle clean build
执行:
java -jar build/libs/gradle_sample.jar
完毕。