Gradle7基本配置
Gradle是JVM生态下又一款开源的自动化构建工具,以基于Groovy的DSL描述构建过程,在结合了ant和maven的优点的基础上,提供了更为简洁,灵活和高效的build体验。
一、新建Gradle项目
在IDEA中配置一个gradle数据目录,主要是存储gradle相关配置、库等内容的目录,默认的话会在C盘用户目录,建议修改到其它盘。
在IDEA中新建项目,选择gradle,一路往下即可。
二、项目结构
使用IDEA新建Gradle项目,会生成类似上图中结构,其中elecroc-client是我建立的根项目,Common、Platform、Tools是我建立的子模块。
gradle目录与gradlew、gradlew.bat是提供无需安装gradle到系统,绿色执行gradle代码用的,在项目根目录打开Terminal可以直接执行gradlew命令,和在系统安装好gradle然后执行gradle命令效果一样。
想要指定gradle版本,修改gradle-wrapper.properties即可,然后同步gradle。
使用gradle管理项目很重要的是settings.gradle和build.gradle两个配置文件,其中settings.gradle是配置项目结构的,只在根项目目录下有。
而build.gradle在根项目和模块下都有一个。
三、主要配置
指定gradle版本、用settings.gradle管理项目结构上边已经讲过,这里主要讲讲build.gradle这个最常改的配置文件。
1 //Gradle脚本自身的执行,获取脚本依赖插件(只有编译工具才会用这个仓库)
2 buildscript {
3 repositories {
4 maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
5 maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
6 }
7 }
8
9 //配置所有项目公共的内容(包括Root Project)
10 allprojects {
11 // 指定语言
12 apply plugin: 'java'
13 // 配置项目信息
14 group 'com.founder'
15 version '2.0'
16 // 配置仓库(项目里面每个gradle模块使用的仓库)
17 repositories {
18 maven { url 'file:///D:/apache-maven/Repository'}
19 mavenLocal()
20 maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
21 mavenCentral()
22 }
23 task hello() {
24 doLast {
25 task ->
26 println "project name is $task.project.name \n"
27 }
28 }
29 }
30
31 //配置子工程(所有Child Project的配置)
32 subprojects {
33 // 指定编译版本
34 sourceCompatibility = 11
35 targetCompatibility = 11
36 // 配置字符编码
37 tasks.withType(JavaCompile) {
38 options.encoding = 'UTF-8'
39 }
40 // 配置全局依赖版本信息
41 ext {
42 junitVersion = '4.12'
43 }
44 //配置子模块依赖
45 dependencies {
46 testImplementation group: 'junit', name: 'junit', version:"${junitVersion}"
47 }
48 hello {
49 print "here is subprojects \n"
50 }
51 }
allprojects影响所有模块,包括根项目。
subprojects影响子模块,不包括根目录。
四、gradle build的三个阶段与task中doLast
gradle 构建的生命周期主要分为三个阶段,Initialization,Configuration,Execution。
- Initialization:Gradle支持单个或多个工程的构建。在Initialization阶段,Gradle决定哪些工程将参与到当前构建过程,并为每一个这样的工程创建一个Project实例。一般情况下,参与构建的工程信息将在settings.gradle中定义。
- Configuration:在这一阶段,配置project的实例。所有工程的构建脚本都将被执行。Task,configuration和许多其他的对象将被创建和配置。
- Execution:在之前的configuration阶段,task的一个子集被创建并配置。这些子集来自于作为参数传入gradle命令的task名字,在execution阶段,这一子集将被依次执行。

普通代码与写在doLast里的代码像两类task,但这里并没有“两类”task,只是task的不同部分的step在build的不同阶段执行。即doLast内的部分在execution阶段执行(如果task名作为参数传入的话),doLast外的部分在configuration阶段执行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)