gradle 建置系統
常見的建置系統:
- ant
- buck
- maven
- gradle
- sbt
- kobalt
大多數的樣貌 build.gradle:
buildscript { // 建置設定區 - 引入建置相關插件庫
repositories {
jcenter() // 建置套件庫
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3' // 插件庫
}
}
apply plugin: 'com.android.application'
repositories {
jcenter() // 函式套件庫
}
dependencies {
//compile '{group}:{artifact}:{version}'
//compile project('{module}')
}
android {} // com.android.application 插件設定區
多模組的目錄結構:
-a-project
|--build.gradle // 一般空檔, 除非需要子模組共用的設定,可以在這裡設定
|--a-module/build.gradle
|--b-module/build.gradle
設定預設編譯哪些 module:
settings.gradle:
include ':a-module'
include ':b-module'
// or include ':a-module', 'b-module'
設定外部路徑:
// ...
include ':b-c-module'
project(':b-c-module').projectDir = new File(settingsDir, '../b-project/c-module')
build.gradle:
// ...
dependencies {
// ...
compile project(':b-c-module')
}
// ...
有哪些編譯項目可使用
./gradlew tasks
設定快取有效時間
預設 24 小時,每天一開始的編譯都會比較久。為了避免這種情形,可以拉長時間,如有必要再透過強制刷新來解決。
寫到專案設定:
configurations.all {
resolutionStrategy {
cacheDynamicVersionsFor 30, 'days'
cacheChangingModulesFor 30, 'days'
}
}
強制刷新套件
如果有些套件像是 SNAPSHOT.jar 剛更新,可透過 --refresh-dependencies
來刷到新的版本:
./gradlew --refresh-dependencies assembleDebug
顯示詳細的測試項目通過與失敗
tasks.withType(Test) {
testLogging {
exceptionFormat "full"
events "passed", "skipped", "failed", "standardOut", "standardError"
showStandardStreams = true
}
}
一般測試
./gradlew testDebug
測試單項
./gradlew testDebug --tests='*.<testname>'
or
./gradlew -Dtest.single=ClassUnderTest test
顯示更多 lint 警告
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:deprecation" << "-Xlint:unchecked"
}
安裝 gradle wrapper by gradle
gradle wrapper --gradle-version 2.13
安裝 gradle wrapper by docker gradle
docker run -it -v $(pwd):/src yongjhih/gradle gradle wrapper --gradle-version 2.13
升級 gradle wrapper
修改 gradle/wrapper/gradle-wrapper.properties:
...
distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip