| 1. build.gradle 是一个 gradle 的构建脚本文件,支持 java、groovy 等语言。 |
| 2. 每个 project 都会有一个 build.gradle 文件,该文件是项目构建的入口,可配置版本、插件、依赖库等信息。 |
| 3. 每个 build 文件都有一个对应的 Project 实例,对 build.gradle 文件配置,本质就是设置 Project 实例的属性和方法。 |
| 4. 由于每个 project 都会有一个 build 文件,那么 Root Project 也不列外.Root Project 可以获取到所有 Child Project,所以在Root Project 的 build 文件中我们可以对 Child Project 统一配置,比如应用的插件、依赖的 maven 中心仓库 |

| |
| sourceCompatibility = 1.8 |
| |
| targetCompatibility = 1.8 |
| |
| compileJava.options.encoding "UTF-8" |
| |
| compileTestJava.options.encoding "UTF-8" |
| |
| tasks.withType(JavaCompile) { |
| options.encoding = "UTF-8" |
| } |
| |
| tasks.withType(Javadoc) { |
| options.encoding = "UTF-8" |
| } |
| |
| # group+name+version 类似于 maven 的 group+artifactId+version |
| # group和version放在build.gradle中,name放在settings.gradle中 |
| # encoding 解决业务代码与测试代码中文乱码问题 |
| repositories { |
| |
| |
| |
| maven { url 'file: |
| maven { url "$rootDir/lib/release" } |
| |
| mavenLocal() |
| |
| maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" } |
| maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" } |
| |
| mavenCentral() |
| |
| google() |
| } |
- Subprojects 与 Allprojects
| allprojects 是对所有 project(包括 Root Project+ child Project[当前工程和所有子工程])的进行统一配置 |
| 而 subprojects 是对所有 Child Project 的进行统一配 |
| |
| |
| allprojects { |
| tasks.create('hello') { |
| doLast { |
| task -> |
| println "project name is $task.project.name" |
| } |
| } |
| } |
| |
| |
| gradle hello |
| |
| |
| |
| subprojects { |
| hello.doLast{ |
| task-> |
| println "here is subprojects $task.project.name" |
| } |
| } |
| |
| |
| gradle hello |
| |
- allprojects和subprojects所支持的属性
| allprojects(){ |
| apply plugin: 'java' |
| ext { |
| junitVersion = '4.10' |
| .. |
| } |
| task allTask{ |
| ... |
| } |
| repositories { |
| ... |
| } |
| dependencies { |
| ... |
| } |
| } |
| |
| subprojects(){ |
| … |
| } |
| |
| |
| project('subject01') { |
| task subject01 { |
| doLast { |
| println 'for subject01' |
| } |
| } |
| } |
| Project 和 Task 都允许用户添加额外的自定义属性,要添加额外的属性,通过应用所属对象的 ext 属性即可实现。添加之后可以通过 ext 属性对 |
| 自定义属性读取和设置,如果要同时添加多个自定义属性,可以通过 ext 代码块 |
| |
| |
| //自定义一个Project的属性,配置到根工程build.gradle中 |
| ext.age = 18 |
| |
| //通过代码块同时自定义多个属性,配置到根工程build.gradle中 |
| ext { |
| phone = 19292883833 |
| address="北京尚硅谷" |
| } |
| |
| |
| task extCustomProperty { |
| //在task中自定义属性 |
| ext { |
| desc = "奥利给" |
| } |
| doLast { |
| println "年龄是:${age}" |
| println "电话是:${phone}" |
| println "地址是:${address}" |
| println "尚硅谷:${desc}" |
| } |
| } |
| |
| |
| gradle extCustomProperty |
| ext 配置的是用户自定义属性,而 gradle.properties 中一般定义 系统属性、环境变量、项目属性、JVM 相关配置信息。 |
| 例如gradle.properties 文件案例:加快构建速度的,gradle.properties 文件中的属性会自动在项目运行时加载 |
| |
| |
| org.gradle.jvmargs=-Xms4096m -Xmx8192m |
| |
| org.gradle.caching=true |
| org.gradle.parallel=true |
| org.gradle.configureondemand=true |
| org.gradle.daemon=true |
| |
| # buildscript 里是 gradle 脚本执行所需依赖,分别是对应的 maven 库 |
| |
| # 案例 |
| 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.对于多项目构建,项目的 buildscript ()方法声明的依赖关系可用于其所有子项目的构建脚本。 |
| # 3.构建脚本依赖可能是 Gradle 插件 |
| |
| # 案例 |
| |
| 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' |
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术