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

  Task代表了构建过程中的一个简单原子工作单元,类似于一个系统中的子函数。定义Task的目的是将一个大的构建过程划分为粒度较小,高内聚,低耦合,可重用的功能单位,提高构建脚本的开发效率,可读性以及可维护性。例如,java plugin提供的编译或者生成javadoc用的task。

  gradle 构建的生命周期主要分为三个阶段,Initialization,Configuration,Execution。

  • Initialization:Gradle支持单个或多个工程的构建。在Initialization阶段,Gradle决定哪些工程将参与到当前构建过程,并为每一个这样的工程创建一个Project实例。一般情况下,参与构建的工程信息将在settings.gradle中定义。
  • Configuration:在这一阶段,配置project的实例。所有工程的构建脚本都将被执行。Task,configuration和许多其他的对象将被创建和配置。
  • Execution:在之前的configuration阶段,task的一个子集被创建并配置。这些子集来自于作为参数传入gradle命令的task名字,在execution阶段,这一子集将被依次执行。
  我们经常可以看到这样的task:

  普通代码与写在doLast里的代码像两类task,但这里并没有“两类”task,只是task的不同部分的step在build的不同阶段执行。即doLast内的部分在execution阶段执行(如果task名作为参数传入的话),doLast外的部分在configuration阶段执行。

posted @ 2022-06-29 15:44  光何  阅读(1017)  评论(0编辑  收藏  举报