前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Gradle build.gradle 文件

Gradle build.gradle 文件

作者头像
鱼找水需要时间
发布2023-02-16 18:51:33
1K0
发布2023-02-16 18:51:33
举报
文章被收录于专栏:SpringBoot教程SpringBoot教程
  • build.gradle 是一个 gradle 的构建脚本文件,支持 java、groovy 等语言。
  • 每个 project 都会有一个 build.gradle 文件,该文件是项目构建的入口,可配置版本、插件、依赖库等信息。
  • 每个 build 文件都有一个对应的 Project 实例,对 build.gradle 文件配置,本质就是设置 Project 实例的属性和方法。
  • 由于每个 project 都会有一个 build 文件,那么 Root Project 也不列外.Root Project 可以获取到所有 Child Project,所以在 Root Project 的 build 文件中我们可以对 Child Project 统一配置,比如应用的插件、依赖的 maven 中心仓库等。
  • build 文件中常见的属性和方法如下所示:
在这里插入图片描述
在这里插入图片描述

1、常见属性代码

代码语言:javascript
复制
//指定使用什么版本的JDK语法编译源代码,跟编译环境有关,在有java插件时才能用
sourceCompatibility = 1.8 
//指定生成特定于某个JDK版本的class文件:跟运行环境有关,在有java插件时才能用 
targetCompatibility = 1.8 
//业务编码字符集,注意这是指定源码解码的字符集[编译器] 
compileJava.options.encoding "UTF-8" 
//测试编码字符集,注意这是指定源码解码的字符集[编译器] 
compileTestJava.options.encoding "UTF-8" 
//编译JAVA文件时采用UTF-8:注意这是指定源码编码的字符集【源文件】 
tasks.withType(JavaCompile) { 
    options.encoding = "UTF-8" 
}
//编译JAVA文件时采用UTF-8:注意这是指定文档编码的字符集【源文件】 
tasks.withType(Javadoc) { 
    options.encoding = "UTF-8" 
}

提示 1:group+name+version 类似于 maven 的 group+artifactId+version 提示 2:encoding 解决业务代码与测试代码中文乱码问题

2、Repositories

代码语言:javascript
复制
repositories { 
    //gradle中会按着仓库配置的顺序,从上往下依次去对应的仓库中找所需要的jar包: 
    //如果找到,则停止向下搜索,如果找不到,继续在下面的仓库中查找 
    //指定去本地某个磁盘目录中查找:使用本地file文件协议:一般不用这种方式 maven { url 'file:///D:/repos/mavenrepos3.5.4'} 
    maven { url "$rootDir/lib/release" } 
    //指定去maven的本地仓库查找 
    mavenLocal() 
    //指定去maven的私服或者第三方镜像仓库查找 
    maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" } 
    maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" } 
    //指定去maven的远程仓库查找:即 https://repo.maven.apache.org/maven2/ 
    mavenCentral() 
    //去google仓库查找 
    google() 
}

因为 Gradle 没有自己的远程仓库,而是使用 Maven、jcenter、jvy、google 这些远程仓库。

3. Subprojects 与 Allprojects

allprojects 是对所有 project(包括 Root Project+ child Project[当前工程和所有子工程])的进行统一配置,而 subprojects 是对所有 Child Project 的进行统一配置。

代码语言:javascript
复制
allprojects { 
    tasks.create('hello') { 
        doLast { 
            task ->println "project name is $task.project.name" 
        } 
    } 
}
subprojects { 
    hello.doLast{ 
        task-> println "here is subprojects $task.project.name" 
    } 
}

通常在 subprojects 和 allprojects 中:

代码语言:javascript
复制
allprojects(){ //本质Project中的allprojects方法,传递一个闭包作为参数。 
    apply plugin: 'java' 
    ext {
        junitVersion = '4.10' 
        .. 
    }
    task allTask{ 
        ... 
    }
    repositories { 
        ... 
    }
    dependencies { 
        ... 
    } 
}
subprojects(){ 
    …//同上面allprojects中的方法。 
}

1: 如果是直接在 根 project 配置 repositories 和 dependencies 则 只针对根工程有效。 2: 我们也可以在对单个 Project 进行单独配置:

代码语言:javascript
复制
project('subject01') { 
    task subject01 { 
        doLast { 
            println 'for subject01' 
        } 
    } 
}

执行 gradle build 指令即可查看测试效果。

4、ext 用户自定义属性

Project 和 Task 都允许用户添加额外的自定义属性,要添加额外的属性,通过应用所属对象的 ext 属性即可实现。添加 之后可以通过 ext 属性对自定义属性读取和设置,如果要同时添加多个自定义属性,可以通过 ext 代码块:

代码语言:javascript
复制
//自定义一个Project的属性 
ext.age = 18 
//通过代码块同时自定义多个属性 
ext {
    phone = 19292883833 
    address="北京" 
}
task extCustomProperty { 
    //在task中自定义属性 
    ext {
        desc = "奥利给" 
    }
    doLast { 
        println "年龄是:${age}" 
        println "电话是:${phone}" 
        println "地址是:${address}" 
        println "口号:${desc}" 
    } 
}

测试:通过 gradle extCustomProperty 输出结果为:

年龄是:18 电话是:19292883833 地址是:北京 口号:奥利给

ext 配置的是用户自定义属性,而 gradle.properties 中一般定义 系统属性、环境变量、项目属性、JVM 相关配置 信息。例如 gradle.properties 文件案例:加快构建速度的,gradle.properties 文件中的属性会自动在项目运行时加载。

代码语言:javascript
复制
## 设置此参数主要是编译下载包会占用大量的内存,可能会内存溢出 
org.gradle.jvmargs=-Xms4096m -Xmx8192m 
## 开启gradle缓存 
org.gradle.caching=true 
#开启并行编译 
org.gradle.parallel=true 
#启用新的孵化模式 
org.gradle.configureondemand=true 
#开启守护进程 
org.gradle.daemon=true

5、Buildscript

buildscript 里是 gradle 脚本执行所需依赖,分别是对应的 maven 库和插件。

代码语言:javascript
复制
import org.apache.commons.codec.binary.Base64 
buildscript { 
    repositories { 
        mavenCentral() 
    }
    dependencies { 
        classpath group: 'commons-codec', name: 'commons-codec', version: '1.2' 
    } 
}
tasks.register('encode') { 
    doLast { 
        def byte[] encodedString = new Base64().encode('hello world\n'.getBytes())
        println new String(encodedString) 
    } 
}

需要注意的是:

  1. buildscript{}必须在 build.gradle 文件的最前端。
  2. 2.对于多项目构建,项目的 buildscript ()方法声明的依赖关系可用于其所有子项目的构建脚本。
  3. 构建脚本依赖可能是 Gradle 插件。

如下所示:

代码语言:javascript
复制
//老式apply插件的引用方式,使用apply+buildscript 
buildscript { 
    ext {
        springBootVersion = "2.3.3.RELEASE" 
    }
    repositories { 
        mavenLocal() 
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public' } 
        jcenter() 
    }
    //此处引入插件 
    dependencies { 
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
    } 
}
apply plugin: 'java' //核心插件,无需事先引入 
apply plugin: 'org.springframework.boot' //社区插件,需要事先引入,才能应用,不必写版本号
asspath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
    } 
}
apply plugin: 'java' //核心插件,无需事先引入 
apply plugin: 'org.springframework.boot' //社区插件,需要事先引入,才能应用,不必写版本号
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、常见属性代码
  • 2、Repositories
  • 3. Subprojects 与 Allprojects
  • 4、ext 用户自定义属性
  • 5、Buildscript
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档