目录
三、IDEA新建gradle SpringBoot多模块项目
构建gradle项目之前,一定要先配置好gradle,再进行构建,否则会发生意想不到的效果。
一、安装配置gradle
下载gradle
首先去官网:https://gradle.org/releases/,然后下载自己想要的版本,这里选择最新版:
下载后直接解压即可。
配置环境变量(Mac实例):
- GRADLE_HOME为刚刚gradle的解压路径
- GRADLE_USER_HOME为本地仓库路径,如果不配置 jar会存放在/Users/xxx/.gradle/caches/modules-2/files-2.1路径下
GRADLE_HOME=/Users/xxx/gradle-6.5
export GRADLE_HOME
export PATH=$PATH:$GRADLE_HOME/bin
GRADLE_USER_HOME=/Users/xxx/gradle-6.5/LocalHouse
配置后source一下配置文件,然后在终端中输入
gradle -version
看到如下结果即配置成功
二、IDEA新建gradle SpringBoot项目
File--New--Project
Next,Type选择:Gradle Project
Next--Finish,在弹出的窗口中选择使用自己本地的gradle,并配置本地gradle路径;如果前一步的环境变量配置好了本地仓库,这里会自动设置好,jar包下载的路径就是:你的本地仓库路径+/caches/modules-2/files-2.1
单机ok,去看自己的gradle仓库,其路径下已经有了jar包:【注意:此处如果是在配置好环境变量前就开始创建项目,那需要删除项目,配置好环境变量后重新创建,否则jar就是下载不到你想要的路径中!】
三、IDEA新建gradle SpringBoot多模块项目
创建父项目
只是一个普通的Gradle项目即可:File--New--Project
next,填好GroupId和ArtifactId
next
next -- finish完成创建
在生成的项目中,删除src文件夹
构建子项目
简单划分两个模块
- 正常业务逻辑【asset-api】
- 通用工具类【asset-utils】,asset-api需要依赖此模块
在父项目名称右击,创建模块
选择Spring Initializr,next【注意:此处由于是创建SpringBoot项目所以选择Spring Initializr,如果是创建普通项目可以继续选择Gradle】
Group与父项目保持一致,Artifact填入子模块名称,Type选择Gradle Project,其余信息根据需求修改,然后next
勾选自己需要的SpringBoot配置,以及SpringBoot版本,然后next
确定子模块名称,然后finish,然后弹出窗口配置子模块的gradle,和刚才一样一通选就好了。然后点ok
此时右侧Gradle视图已经有了刚刚创建的asset-api
asset-util模块创建同上,但我们发现在右侧的Gradle视图中,asset和asset-api以及asset-utils是平级关系,并不是主从关系,因此要修改父项目中的settings.gradle文件,加入:
include 'asset-api'
include 'asset-utils'
此时,父项目的settings.gradle应该如下,包含两个模块,刷新Gradle,右侧的Gradle视图已两个子项目已经从属于asset,同时删除多余的平级关系。
统一删除多余的文件和文件夹
.gitignore / HELP.md / gradle文件夹 / 子项目的settings.gradle
配置asset-api对asset-utils的依赖, 在asset-api模块的build.gradle的dependencies中加入compile project(":asset-utils")
dependencies {
...
...
compile project(":asset-utils")
}
然后再看右侧Gradle的视图,已经可以看到asset-api对asset-utils的依赖
测试:
在asset-utils模块中新建UuidUtil类,然后在asset-api模块中调用,并运行。项目正常启动,并正常打印!!nice
多项目build.gradle文件配置
多项目配置可以统一管理,无需每一个子模块都引入一次,统一在父项目的build.gradle中配置
- 统一配置java插件及版本,删除子模块中重复配置
- 统一配置公共属性:group、version,删除子模块中重复配置
- 配置模块间依赖
- 配置共用仓库
- 配置通用依赖dependencies
allprojects和subprojects
- allprojects中配置对所有模块生效,包括父模块
- subprojects仅对子模块生效
刚创建好的项目每一个build.gradle中都有java插件配置
plugins {
id 'java'
}
在父项目的build.gradle中可将其放入allprojects块中
apply plugin: 'java'
给出最终配置
父模块的build.gradle
// 统一配置java插件、版本、公共属性:group、version(父模块也需要)
allprojects {
group 'com.fc'
version '1.0-SNAPSHOT'
//项目是java项目
apply plugin: 'java'
sourceCompatibility = 1.8
}
// 配置子模块共用仓库、依赖jar
subprojects {
repositories {
mavenLocal()
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
}
dependencies {
...
xxx
...
}
}
asset-api模块的build.gradle
dependencies {
compile project(":asset-utils")
}
asset-utils模块的build.gradle
空