gradle下載配置
為龍井等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及龍井網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、龍井網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!1、在搭建好 spring 5 源碼后,在自己編寫測(cè)試用例和添加測(cè)試 module 時(shí),會(huì)遇到一些配置報(bào)錯(cuò)信息,由于不了解 gradle 配置文件的語法和含義,產(chǎn)生了一些困擾,因此在這里學(xué)習(xí)一下 gradle 一些配置文件語法。
2、gradle 官網(wǎng):https://gradle.org/
一個(gè) gradle 工程中只能有一個(gè)settings.gradle
文件
settings.gradle 文件的語法,這里參考spring 源碼的 settings 文件
項(xiàng)目名稱中
:
代表項(xiàng)目的分隔符, 類似路徑中的/
. 如果以:
開頭則表示相對(duì)于 root project
//根工程項(xiàng)目名
rootProject.name = 'root'
//包含的子工程名稱
include 'subject01'
include 'subject02'
include 'subject03'
//包含的子工程下的子工程名稱
include 'subject01:subproject011'
include 'subject01:subproject012'
Gradle 中的依賴分別為直接依賴,項(xiàng)目依賴,本地jar 依賴
直接依賴dependencies {//①.依賴當(dāng)前項(xiàng)目下的某個(gè)模塊[子工程]
implementation project(':spring-aop')
//②.直接依賴本地的某個(gè)jar文件
implementation files('libs/foo.jar', 'libs/bar.jar')
//②.配置某文件夾作為依賴項(xiàng)
implementation fileTree(dir: 'libs', include: ['*.jar'])
//③.直接依賴 簡寫
implementation 'org.apache.logging.log4j:log4j:2.17.2'
//③.直接依賴 完整版 group/name/version 同 maven 的 GAV
implementation group: 'org.apache.logging.log4j', name: 'log4j', version: '2.17.2'
}
項(xiàng)目依賴:從項(xiàng)目的某個(gè)模塊依賴另一個(gè)模塊例如:spring-context 依賴 spring-aop
implementation project(':spring-aop')
本地 jar 依賴:本地 jar 文件依賴一般包含以下兩種方式
/直接依賴某文件
implementation files('libs/foo.jar', 'libs/bar.jar')
//配置某文件夾作為依賴項(xiàng)
implementation fileTree(dir: 'libs', include: ['*.jar'])
2.2、依賴的下載當(dāng)執(zhí)行 build 命令時(shí),gradle 就會(huì)去配置的依賴倉庫中下載對(duì)應(yīng)的 Jar,并應(yīng)用到項(xiàng)目中。
2.3、依賴的類型類似于 Maven 的 scope 標(biāo)簽
類型 | 作用 | 補(bǔ)充 |
---|---|---|
compileOnly | 適用于編譯期需要而不需要打包的情況 | |
runtimeOnly | 只在運(yùn)行期有效,編譯時(shí)不需要 | 取代老版本中被移除的 runtime |
implementation | 針對(duì)源碼[src/main 目錄] ,在編譯、運(yùn)行時(shí)都有效 | 取代老版本中被移除的 compile |
testCompileOnly | 用于編譯測(cè)試的依賴項(xiàng),運(yùn)行時(shí)不需要 | |
testRuntimeOnly | 只在測(cè)試運(yùn)行時(shí)需要,而不是在測(cè)試編譯時(shí)需要 | 取代老版本中被移除的testRuntime |
testImplementation | 針對(duì)測(cè)試代碼[src/test 目錄] | 取代老版本中被移除的testCompile |
providedCompile | war 插件提供支持,編譯、測(cè)試階段代碼需要依賴此類jar 包,而運(yùn)行階段容器已經(jīng)提供了相應(yīng)的支持,所以無需將這些文件打入到war 包中了 | 例如servlet-api.jar、jsp-api.jar |
compile | 編譯范圍依賴在所有的 classpath 中可用,同時(shí)它們也會(huì)被打包 | 在 gradle 7.0 已經(jīng)移除 |
runtime | untime 依賴在運(yùn)行和測(cè)試系統(tǒng)的時(shí)候需要,在編譯的時(shí)候不需要,比如mysql 驅(qū)動(dòng)包 | 在 gradle 7.0 已經(jīng)移除 |
api | java-library 插件提供支持,這些依賴項(xiàng)可以傳遞性地導(dǎo)出給使用者,用于編譯時(shí)和運(yùn)行時(shí) | 取代老版本中被移除的 compile |
compileOnlyApi | java-library 插件提供支持,在聲明模塊和使用者在編譯時(shí)需要的依賴項(xiàng),但在運(yùn)行時(shí)不需要 |
例子:
分析:
api | implementation | |
---|---|---|
編譯時(shí) | libC 的內(nèi)容發(fā)生變化,由于使用的是 api 依賴,依賴會(huì)傳遞,所以 libC、libA、projectX 都要發(fā)生變化,都需要重新編譯,速度慢 | 如果libD 的內(nèi)容發(fā)生變化,由于使用的是implemetation 依賴,依賴不會(huì)傳遞,只有l(wèi)ibD、libB 要變化并重新編譯,速度快 |
運(yùn)行時(shí) | libC、libA、projectX 中的class 都要被加載 | 和api 相同 |
總結(jié) | 多數(shù)情況下使用implementation |
拓展:
例子:
2.3.1、默認(rèn)Gradle 會(huì)使用最新版本的 jar 包新版本的 jar 包一般都是向下兼容的(建議使用官方自帶的這種解決方案)
2.3.2、強(qiáng)制使用某個(gè)版本dependencies {testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
//強(qiáng)制使用某個(gè)版本!!【官方建議使用這種方式】
implementation('org.slf4j:slf4j-api:1.4.0!!')
//這種效果和上面那種一樣,強(qiáng)制指定某個(gè)版本
implementation('org.slf4j:slf4j-api:1.4.0'){version{strictly("1.4.0")
}
}
3、插件configure(allprojects) {project ->group = "org.springframework"
version = qualifyVersionIfNecessary(version)
apply plugin: "java"
apply plugin: "kotlin"
apply plugin: "checkstyle"
apply plugin: "propdeps"
apply plugin: "test-source-set-dependencies"
apply plugin: "io.spring.dependency-management"
apply from: "${gradleScriptDir}/ide.gradle"
}
3.2、第三方插件如果第三方插件已經(jīng)被托管在 https://plugins.gradle.org/
// 3rd party plugin repositories can be configured in settings.gradle
plugins {id "io.spring.dependency-management" version "1.0.7.RELEASE" apply false
id "org.jetbrains.kotlin.jvm" version "1.2.71" apply false
id "org.jetbrains.dokka" version "0.9.18"
id "org.asciidoctor.convert" version "1.5.8"
id "com.jfrog.artifactory" version '4.9.8' apply false
}
4、build.gradle在 spring 中一般為
project-name.gradle
每個(gè) module 都要自己的.gradle
文件,用來配置版本、插件、依賴庫等信息
4.1、repositorybuild 文件中常見的屬性和方法:
4.2、Subprojects 與 Allprojects從上往下找,找到了就停止,找不到繼續(xù)往下找
4.3、ext對(duì)指定工程進(jìn)行配置
4.4、buildscript自定義屬性
- buildscript{}必須在 build.gradle 文件的最前端。
- 對(duì)于多項(xiàng)目構(gòu)建,項(xiàng)目的 buildscript ()方法聲明的依賴關(guān)系可用于其所有子項(xiàng)目的構(gòu)建腳本。
記錄了一些在嘗試建立測(cè)試模塊中不了解的內(nèi)容,之后在看源碼的過程中遇到問題再補(bǔ)充吧…
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
標(biāo)題名稱:【gradle】從settings.gradle說起-創(chuàng)新互聯(lián)
本文路徑:http://aaarwkj.com/article14/cojige.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站改版、微信公眾號(hào)、網(wǎng)站內(nèi)鏈、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容