说明
本文手把手演示如果利用Gradle + SpringBoot创建一个多模块项目,作为以后功能点验证、持续开发的基础。
环境信息
- 操作系统:win 10
- JDK:1..8.0-181
- Gradle:gradle-6.8.2
- IDEA:2020.1 ULTIMATE
- SpringBoot:2.5.6
新建项目
-
打开IDEA,显示如下,点击 “创建项目”
-
选择以Gradle方式创建项目,指定项目的JDK版本后,点击Next进入下一步
- 填写项目基本信息,点击完成
Location:项目目录,选定目录后ArtifactId和Name也即确定
GroupId:分组名,一般以域名反转形式设置,如域名是www.baidu.com, 则此处设置为com.baidu
ArtifictId:理解为项目名
Name:同ArtifactId
- 如果你需要更换gradle依赖,配置如下
- 完整的bild.gradle设置如下
//build.gradle配置初识:https://blog.csdn.net/lw_power/article/details/51241720
//gradle默认属性:http://www.cnblogs.com/langtianya/p/5209515.html
plugins {
id 'java'
}
//全局使用的值
ext {
springBootVersion = '2.5.6'
}
//该项目与全部子项目的属性
allprojects {
//指定编译.java文件的jdk版本
sourceCompatibility = 1.8
//确保class文件与targetCompatibility指定版本,或者更新的java虚拟机兼容
targetCompatibility = 1.8
//项目所属组,中间以.(英文逗号)隔开
group 'com.yibenzhenjing'
//项目版本号
version '1.0.1-SNAPSHOT'
//应用插件
apply plugin: 'java'
apply plugin: 'idea'
// java编译的时候缺省状态下会因为中文字符而失败,设置字符集
[compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'
//仓库,国内外仓库访问、下载速度会不同
repositories {
mavenLocal()
maven { url "http://maven.aliyun.com/nexus/content/groups/public" } //国内仓库,下载会快一点
}
//依赖,testCompile表示依赖范围是test,其他依赖写compile
dependencies {
compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.5.6'
}
}
subprojects {
}
- 在项目中创建.gitignore文件,填写指定格式的文件
至此,项目主模块创建完成。
创建子模块
- 选中项目后, File -> New -> Module 或 右击项目,选择 New -> Module
- 选择以Gradle方式创建模块,指定JDK版本后,进入下一步
- 填写模块信息,点击完成
Parent:父级,选择之前创建的core项目
Name:填写模块名
其他配置不需要填写
- 可以看到项目下多出了util模块,build.gradle配置清空即可
// 如果单独构建,产物包名称可自定义
archivesBaseName = 'core-util'
dependencies {
}
- 在util模块下创建类
package com.yibenzhenjing.core.util;
/**
* 字符拼接工具
*
* @author tangjialiang
* @since 2021-10-20
**/
public class JoinUtils {
/**
* 分隔符:短横杠
*/
public static final String SEPARATOR_DASH = "-";
/**
* 用默认连接符拼接多个字符串
*
* @param key 待拼接的字符串
* @return 拼接结果
*/
public static String joinString(String... key) {
return joinStringWithSeprator(SEPARATOR_DASH, key);
}
/**
* 指定连接符拼接多个字符串
*
* @param separator 连接符
* @param key 待拼接的字符串
* @return 拼接结果
*/
public static String joinStringWithSeprator(String separator, String... key) {
StringBuilder sBuiler = new StringBuilder();
int paramSize = key.length;
int endKeyIndex = paramSize - 1;
for (int i = 0; i < paramSize; i++) {
sBuiler.append(key[i]);
if (i > 0 && i < endKeyIndex) {
sBuiler.append(separator);
}
}
return sBuiler.toString();
}
}
- 将util构建为二方库
执行成功后看到如下
- 创建应用模块site,过程同util,build.gradle如下
buildscript {
repositories {
mavenLocal()
maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'org.springframework.boot'
archivesBaseName = 'site'
dependencies {
compile project(':util')
}
- 创建项目启动类
package com.yibenzhenjing.core.site;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 项目启动类
*
* @author tangjialiang
* @since 2021-10-27
**/
@SpringBootApplication
public class SiteApplication {
public static void main(String[] args) {
SpringApplication.run(SiteApplication.class, args);
}
}
- site模块下创建测试类
package com.yibenzhenjing.core.site.controller;
import com.yibenzhenjing.core.util.JoinUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 验证项目正常启动的类
*
* @author tangjialiang
* @since 2021-10-28
**/
@RestController
public class HelloController {
@GetMapping("hello")
public String hello() {
return "hello" + JoinUtils.joinString(",", "author");
}
}
- 启动项目,
并在浏览器中打开 http://localhost:8080/hello ,结果如下,满足预期
至此,通过IDEA创建的 Gradle + SpringBoot的项目成功开发,如果您正在新建类似项目,希望能给您写参考。