Gradle 开发随笔

前言

Gradle 常见配置

指定 JDK 版本

在项目的 gradle.properties 配置文件中,添加以下内容:

1
org.gradle.java.home=/usr/java/jdk-17/

添加 Lombok 依赖

1
2
3
4
5
6
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.6'
testCompileOnly 'org.projectlombok:lombok:1.18.6'
annotationProcessor 'org.projectlombok:lombok:1.18.6'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.6'
}

Gradle 项目打包

项目打成 Jar 包后包含所有依赖

1
2
3
4
5
6
7
8
9
jar {
manifest {
attributes(
"Manifest-Version": 1.0,
"Main-Class": "com.clay.proxy.ProxyApplication"
)
}
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}

Gradle 单元测试

编译时取消所有单元测试

1
2
3
test {
exclude '**/*'
}

Gradle Plugin 使用

plugins 与 apply plugin 的区别

  • Gradle 新版本的写法
1
2
3
plugins {
id 'org.springframework.boot' version '2.1.0.RELEASE'
}
  • Gradle 2.0 及更旧版本的写法
1
2
3
4
5
6
7
8
9
10
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}

apply plugin: 'org.springframework.boot'

Gradle 多模块开发

子模块依赖父模块的 Jar 包类

在父模块的 build.gradle 配置文件中,添加以下内容:

1
2
3
jar {
enabled = true
}

子模块依赖父模块中的资源文件

在子模块的 build.gradle 配置文件中,指定父模块的资源文件,配置方式如下:

  • 第一种方式
1
2
3
4
5
6
7
8
sourceSets {
main {
resources {
// 指定资源文件目录,若存在同名资源文件,左边声明的默认会被右边声明的所覆盖
srcDirs = ['src/main/resources', '../common/build/resources/main']
}
}
}
  • 第二种方式
1
2
3
4
5
processResources {
// 指定资源文件目录,若存在同名资源文件,先声明的默认会被后声明的所覆盖
from('src/main/resources')
from('../common/build/resources/main')
}