Gradle在Java开发中可以作为项目构建工具,相比于Maven,Gradle构建更加快速,没有复杂的xml文件,取而代之的是通过脚本完成诸如依赖管理,项目构建配置,插件配置等功能。
Gradle官网提供了详细的文档,Gradle Document,本文记录的是个人在学习以及使用Gradle过程中,使用到的特性以及遇到问题的解决办法。
- Gradle project结构
- Gradle常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
$ gradle init
Select type of project to generate:
1: basic
2: application
3: library
4: Gradle plugin
Enter selection (default: basic) [1..4] 3
Select implementation language:
1: C++
2: Groovy
3: Java
4: Kotlin
5: Scala
6: Swift
Enter selection (default: Java) [1..6] 3
Select build script DSL:
1: Groovy
2: Kotlin
Enter selection (default: Groovy) [1..2] 1
Select test framework:
1: JUnit 4
2: TestNG
3: Spock
4: JUnit Jupiter
Enter selection (default: JUnit 4) [1..4]
Project name (default: demo):
Source package (default: demo):
BUILD SUCCESSFUL
2 actionable tasks: 2 executed
|
- 本地jdk环境是jdk8, 但是想让Gradle在jdk11环境下编译
在project root下添加gradle.properties文件,增加如下配置
org.gradle.java.home=/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
gradle.properties支持多种配置方式,如果在多个地方均配置有properties文件,优先级如下:
- system properties, e.g. when -Dgradle.user.home is set on the command line.
- gradle.properties in GRADLE_USER_HOME directory.
- gradle.properties in project root directory.
- gradle.properties in Gradle installation directory.
其他的关于build的详细配置,可以参考官网Build Enviroment
- build.gradle - 使用Gradle管理依赖
Gradle可以使用Maven仓库,如果想在项目中优先使用本地仓库,可以在repositories
中加入mavenLocal()
当需要添加某项依赖时,首先可以去https://search.maven.org/ 或https://mvnrepository.com/检索相应的依赖包,选择想要的版本,然后复制对应的gradle路径即可,以下两种方式是等效的。
implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.14.0'
implementation 'org.apache.logging.log4j:log4j-core:2.14.0'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
plugins {
id 'org.springframework.boot' version '2.4.3'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'io.leo'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'com.alibaba:fastjson:1.2.75'
implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.14.0'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'mysql:mysql-connector-java'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
}
test {
useJUnitPlatform()
}
|
使用 Idea Plugin ,执行命令./gradlew ideaModule
即可生成项目下各个 module 的 iml文件,目的是让 Idea 识别各个 module 为 gradle的 project
参考: https://docs.gradle.org/current/userguide/idea_plugin.html