gradle 是什麼
gradle 是一個讓構建自動化的工具,類似於maven,ant的功能.
使用gradle可以給java項目編譯,單元測試,打包,或者生成可執行的jar包等
gradle的依賴環境
gradle依賴java環境,所以使用gradle前需要安裝jdk 或jre
gradle 構建項目的流程
gradle的構建依賴於task, task可以指定與其他task之間的依賴關係 比如,有兩個task,walk 和bike,如果指定walk依賴bike,那麼 執行walk前會先執行bike.
task的來源有兩種:
- 1.插件提供,gradle有很多現成的插件;
- 2.自定義:在build.gradle 文件中聲明task
task 能實現哪些功能
下面是一些常用的基本功能
複製
task walk(description:'walk') {
doLast {
copy {
into 'demo'
exclude '**/.svn/**'
from('README.md')
}
}
}
刪除
task walk(description:'walk') {
doLast {
println 'walk...'
project.delete {
delete 'README.md'
followSymlinks = true
}
}
}
參考:https://docs.gradle.org/current/dsl/org.gradle.api.Project.html#N1512A
如何執行任務
方式一:使用全局命令
gradle <任務名>
方式二:使用項目中的腳本
./gradlew <任務名>
引入本地jar包
compile project.fileTree(dir:'/Users/whuanghkl/code/mygit/myproject/target',include:['io0007-0.0.1.jar'])
gradle的插件有哪些
參考 https://docs.gradle.org/current/userguide/userguide.html
如何查詢依賴的版本
gradle中依賴的倉庫有多種:
參考:https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.dsl.RepositoryHandler.html
我們可以選擇 maven倉庫:
repositories {
mavenCentral()
}
那麼查詢依賴就和maven一樣了.
生成可執行的jar包
我的項目是spring boot,所以需要引入插件'org.springframework.boot'id 'org.springframework.boot' version '2.0.3.RELEASE'
需要在build.gradle 文件中 指定可執行jar的main class :
jar {
manifest {
attributes 'Main-Class': 'com.kunlunsoft.Application'
}
}
執行任務bootJar 就可以生成可執行的jar包
gradle 與maven相比有哪些優勢
- 因爲基於 groovy,功能更強大,可以很方便的自定義任務;
- 添加依賴更簡潔方便,maven 需要三行,gradle只需要一行;
- 任務的執行流程更靈活,不像maven的生命週期那麼固定.
我項目中完整的build.gradle 文件如下:
plugins {
id 'java'
id 'base'
// id 'application'
id 'org.springframework.boot' version '2.0.3.RELEASE'
}
//mainClassName = "com.kunlunsoft.Application"
group 'com.kunlunsoft'
version '1.0.0-SNAPSHOT'
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
}
jar {
manifest {
attributes 'Main-Class': 'com.kunlunsoft.Application'
}
}
task walk(description:'walk') {
doLast {
println 'walk...'
}
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
testCompile("org.springframework.boot:spring-boot-starter-test")
//數據源
compile 'org.springframework.boot:spring-boot-starter:1.5.14.RELEASE'
compile 'org.springframework.boot:spring-boot-starter-web:1.5.14.RELEASE'
compile 'org.springframework.boot:spring-boot-starter-data-redis:1.5.14.RELEASE'
compile 'mysql:mysql-connector-java:5.1.38'
compile project.fileTree(dir:'/Users/whuanghkl/code/myproject/target',include:['io0007-0.0.1-SNAPSHOT.jar'])
compile 'com.google.guava:guava:23.0-rc1'
compile 'org.apache.commons:commons-email:1.5'
compile 'org.codehaus.jackson:jackson-mapper-lgpl:1.9.12'
//redis
// compile 'org.springframework.data:spring-data-redis:1.8.13.RELEASE'
compile 'redis.clients:jedis:2.9.0'
compile 'org.springframework.statemachine:spring-statemachine-core:1.2.0.RELEASE'
compile 'com.alibaba:fastjson:1.2.47'
//配置mybatis
compile "org.mybatis.spring.boot:mybatis-spring-boot-starter:1.1.1"
compile 'org.springframework.boot:spring-boot-gradle-plugin:1.5.14.RELEASE'
// compile 'org.springframework:springloaded:1.5.14.RELEASE'
}
IDEA建議安裝如下插件
參考:https://my.oschina.net/huangweiindex/blog/1844872
https://my.oschina.net/huangweiindex/blog/1842459