gradle 是什么
gradle 是一個讓構(gòu)建自動化的工具,類似于maven,ant的功能.
使用gradle可以給java項目編譯,單元測試,打包,或者生成可執(zhí)行的jar包等
gradle的依賴環(huán)境
gradle依賴java環(huán)境,所以使用gradle前需要安裝jdk 或jre
gradle 構(gòu)建項目的流程
gradle的構(gòu)建依賴于task, task可以指定與其他task之間的依賴關(guān)系 比如,有兩個task,walk 和bike,如果指定walk依賴bike,那么 執(zhí)行walk前會先執(zhí)行bike.
task的來源有兩種:
- 1.插件提供,gradle有很多現(xiàn)成的插件;
?
?
- 2.自定義:在build.gradle 文件中聲明task
?
task 能實現(xiàn)哪些功能
下面是一些常用的基本功能
復(fù)制
?
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?
?
?
?
?
如何執(zhí)行任務(wù)
方式一:使用全局命令
gradle <任務(wù)名>
?
方式二:使用項目中的腳本
./gradlew <任務(wù)名>
?
引入本地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一樣了.
生成可執(zhí)行的jar包
我的項目是spring boot,所以需要引入插件'org.springframework.boot'id 'org.springframework.boot' version '2.0.3.RELEASE'
需要在build.gradle 文件中 指定可執(zhí)行jar的main class :
?
jar { manifest { attributes 'Main-Class': 'com.kunlunsoft.Application' }}
?
?
執(zhí)行任務(wù)bootJar 就可以生成可執(zhí)行的jar包
??
gradle 與maven相比有哪些優(yōu)勢
- 因為基于 groovy,功能更強(qiáng)大,可以很方便的自定義任務(wù);
- 添加依賴更簡潔方便,maven 需要三行,gradle只需要一行;
- 任務(wù)的執(zhí)行流程更靈活,不像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.8targetCompatibility = 1.8repositories { 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") //數(shù)據(jù)源 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'}
?
?
參考:https://my.oschina.net/huangweiindex/blog/1844872
https://my.oschina.net/huangweiindex/blog/1842459