目錄 start
html
目錄 end
|2018-08-03| 碼雲 | CSDN | OSChina
****************************************java
我的見解github
優缺點spring
Gradle大吐槽
官方對比Gradle和Mavenmongodb
優勢docker
缺點windows
Gradle in Action 中譯
若是沒有一點Groovy基礎, 閱讀自定義Task等一些高自定義的地方仍是比較困惑
後端
官方網址 有各個版本的下載以及版本發行說明
彷佛版本越高,內存佔用越大, 從4.7降級回了4.2
4.6
發行說明 |
支持Junit5, 還有解決依賴衝突的一種聲明式方式
和maven使用同一個本地庫 只要加上 M2_HOME 環境變量便可, 值和 MAVEN_HOME 同樣, 並無用
curl -s "https://get.sdkman.io" | bash
sdk install gradle
便可安裝wr https://chocolatey.org/install.ps1 -UseBasicParsing | iex
set-executionpolicy remotesigned
後腳本順利執行gradle 構建文件中的task名
: 直接運行task-b,--build-file test.gradle
指定運行腳本文件--offline
離線模式-P ,--project-prop
:配置參數 -Pmyprop=value-i,--info
: 打印info級別的輸出-s,--stacktrace
: 輸出錯誤棧-q,--quiet
:減小構建出錯時打印的錯誤信息tasks
: 輸出全部創建的taskproperties
: 輸出全部可用的配置屬性--daemon
就會開啓一個守護進程,只會開啓一次,gadle --stop
--no--daemon
阿里雲
當前項目的build.gradle
repositories { def aliyun = "http://maven.aliyun.com/nexus/content/groups/public/" def abroad = "http://central.maven.org/maven2/" maven { url = aliyun artifactUrls abroad } // 馬雲上本身的庫 maven { url = "https://gitee.com/gin9/MavenRepos/raw/master" } mavenCentral() jcenter() }
全局的配置
~/.gradle/init.gradle
allprojects{ repositories { def ALIYUN_REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public' def ALIYUN_JCENTER_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter' all { ArtifactRepository repo -> if(repo instanceof MavenArtifactRepository){ def url = repo.url.toString() if (url.startsWith('https://repo1.maven.org/maven2')) { project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL." remove repo } if (url.startsWith('https://jcenter.bintray.com/')) { project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL." remove repo } } } maven { url ALIYUN_REPOSITORY_URL url ALIYUN_JCENTER_URL } } }
Hello World
task helloworld{ doLast { printf 'Hello World!' } } // 或者是 使用 << 表明doLast: task helloworld<<{ println 'Hello world!' }
gradle -q helloworld
使用本地依賴 compile files('lib/ojdbc-14.jar')
相對的根目錄是src同級目錄
新建一個文件 dependency.gradle
ext { ver = [ junit : '4.12', ] libs = [ "junit" : "junit:junit:$ver.junit", ] }
apply from: 'dependency.gradle'
compile libs['junit']
即便在子模塊中也是如此使用在使用IDE生成項目的時候,能夠選擇gradle的執行目錄,能夠選
gradle wrapper
也能夠選本身下載解壓的完整包
若是使用的不是這個wrapper,那麼別人在下載項目後,運行gradle命令就要先安裝gradle,使用wrapper更好
task wrapper(type: Wrapper){ gradleVersion = '4.8' distributionUrl = '限定訪問內網的URL' distributionPath = '包裝器被解壓縮放的相對路徑' }
gradle wrapper --gradle-version 2.0
有多種方式:
// 1 apply plugin: 'java' // 2 apply{ 'java' } // 3 plugins{ id 'java' }
lombok
annotationProcessor 'org.projectlombok:lombok:1.18.2' compileOnly 'org.projectlombok:lombok:1.18.2' testAnnotationProcessor 'org.projectlombok:lombok:1.18.2' testCompileOnly 'org.projectlombok:lombok:1.18.2'
apply plugin: "maven"
而後就能執行 install等命令了shadowJar 含依賴的jar進行打包
apply plugin: 'docker'
classpath('se.transmode.gradle:gradle-docker:1.2')
項目的配置信息, 通常存在這個文件的時候, Gradle就會認爲當前目錄是做爲一個完整的根項目的, 並在當前目錄添加 .gradle 目錄
通常默認內容爲rootProject.name = ''
採用一個文件統一管理依賴, 而後各個子項目獨立引用 | 完整示例 JavaBase
統一配置依賴, 管理多模塊
若是要添加一個項目也簡單
參考博客:重拾後端之Spring Boot(六) -- 熱加載、容器和多項目
直接在build.gradle中配置
// 一個典型的根項目的構建文件結構 buildscript { // 構建腳本段落能夠配置整個項目須要的插件,構建過程當中的依賴以及依賴類庫的版本號等 } allprojects { // 在這個段落中你能夠聲明對於全部項目(含根項目)都適用的配置,好比依賴性的倉儲等 } subprojects { // * 在這個段落中你能夠聲明適用於各子項目的配置(不包括根項目哦) version = "0.0.1" } // * 對於子項目的特殊配置 project(':common') { } project(':api') { } project(':report') { }
project(':common') { dependencies { compile("org.springframework.boot:spring-boot-starter-data-rest") compile("org.springframework.boot:spring-boot-starter-data-mongodb") compile("org.projectlombok:lombok:${lombokVersion}") } } project(':api') { dependencies { compile project(':common') compile("org.springframework.boot:spring-boot-devtools") } } project(':report') { dependencies { compile project(':common') compile("org.springframework.boot:spring-boot-devtools") compile files(["lib/simsun.jar"]) compile("org.springframework.boot:spring-boot-starter-web") } }
apply plugin: "maven"
而後就能和mvn install 同樣的執行 gradle install 了特別注意使用gpg, 若是按這下面的一堆文檔跟着作的話你要保證你的gpg小於等於2.0版本, 否則就卡在這裏了
build.gradle
apply plugin: 'docker' buildscript { ext { springBootVersion = '2.0.1.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") classpath('se.transmode.gradle:gradle-docker:1.2') } } task buildDocker(type: Docker, dependsOn: build) { //設置自動上傳的話,命名就不能亂取了,倉庫名/鏡像名:tag // push = true test.enabled=false applicationName = jar.baseName dockerfile = file('src/main/docker/Dockerfile') doFirst { copy { from war into stageDir } } }
Dockerfile
FROM frolvlad/alpine-oraclejdk8:slim VOLUME /tmp # 配置通配符是爲了避免受版本影響 ADD weixin*.war app.war # ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.war"] ENTRYPOINT ["java","-jar","/app.war"]
gradle buildDocker
便可構建鏡像docker run --name web --link postgre:db -p 5678:8889 -it 鏡像
注意其中要關聯PostgreSQL的容器