構建 工具 gradle 通常 使用 常見 問答 欄目 Gradle 简体版
原文   原文鏈接

Gradle藉助Groovy語言做爲其配置腳本,使得Gradle變的十分強大,幾乎是無所不能,咱們在掌控這個強大且功能繁多的工具時也比較困難和凌亂,所以本文記錄一些使用過程常見的配置,以備不時之需!java

Gradle如何包含文件

apply from: "./libraries.gradle"

如何指定build輸出目錄和版本號

buildDir = "target"
version = '1.0'

在執行Gradle命令時如何指定參數

gradle task -Pprofile=development

至關於在build.gradle中定義了一個變量profile,因此能夠在上下文中直接使用profile。web

GRADLE和IDEA集成時如何不自動下載依賴源碼和JavaDOC

idea {
    module {
        downloadJavadoc = false
        downloadSources = false
    }
}

如何解決編譯、生成JavaDOC和測試時註釋的亂碼問題

寫在一塊兒:spring

[compileJava, javadoc, compileTestJava]*.options*.encoding = 'UTF-8'

單獨寫:app

javadoc {
    options.encoding = "UTF-8"
}
…

如何自定義Build後的Classes目錄或Resources目錄的輸出位置

Gradle默認把Classes和Resources分開放,那麼把他們放在一塊兒:maven

sourceSets {
    main {
        output.resourcesDir = "${buildDir}/classes/main"
    }
}

Gradle Jetty配置範例和如何指定webdefault.xml

指定webdefault.xml是爲了解決在Windows下靜態文件鎖定的問題ide

apply plugin: "jetty"

jettyRun {
    contextPath = '/'
    reload = 'manual'
    webDefaultXml = file('webdefault.xml')
}

httpPort = 8080
stopPort = 8011
stopKey = 'jetty6'

如何使用.properties文件

Gradle會自動加載文件 gradle.properties工具

在根目錄新建或打開gradle.properties單元測試

spring = 3.2.2.RELEASE
hibernate = 4.1.7.Final

在build.gradle中使用測試

直接使用gradle

println spring
println hibernate

在字符串中使用

println "spring: $spring" 
//或
println "hibernate: ${hibernate}!"

如何限定Task的執行條件

test.onlyIf { !Boolean.getBoolean('skip.tests') }

Task間如何傳遞變量

//Test任務,注意不是Task
test {
    //暴露變量testResult,默認表示單元測試會成功
    ext.testResult = true
    //...
}

task testCompleted <<{
    //讀取testResult值,若是成功... 若是失敗... 想一想這個能作什麼?
    if (test.testResult) {
        //...
    }
}

//在test執行完畢後不管成功或失敗都執行testCompleted任務
test.finalizedBy testCompleted

子項目如何定義

打開或新建settings.gradle文件

include 'm1'
include 'm2'

或者 include 'm1', 'm2'

指定子項目的獨立Gradle腳本名,以項目名命名,而非build.gradle:

rootProject.children.each { project ->
    project.buildFileName = "${project.name}.gradle"
    //校驗子項目合法性
    assert project.projectDir.isDirectory()
    assert project.buildFile.isFile()
}

根項目和子項目如何共享配置

allprojects {
    apply plugin: 'idea'
    repositories {
        mavenCentral()
        mavenLocal()
    }
    //…
}

全部子項目共享配置

subprojects {
    apply plugin: 'java'
    version = '1.0-SNAPSHOT'

    repositories {
        mavenCentral()
    }
}

注意

上面的allprojects和subprojects均可以接收到一個project的參數,由於他們是一個Set<Project>

這樣能夠根據不一樣的子項目個性化定義配置如:

subprojects { subProject ->
    apply plugin: 'idea'
    buildDir = "target"

    if ( ! subProject.name.startsWith( 'm1' ) ) {

        apply plugin: 'java'

        configurations {
            //...
        }

        dependencies {
            //...
        }
    }
}

並且在任什麼時候候都使用subprojects.each {project -> …} .

或者使用configure來批量指定部分項目的配置

configure(subprojects.findAll {it.name.contains('m1')}) {
    apply plugin: 'war'
}

在多項目配置中如何單獨指定單個項目配置

project(‘:m1’) {
    apply plugin: 'war'
    dependencies { 
        //...
    }
}

':m1' 項目名稱。

子項目間如何依賴

dependencies {
    compile(
         project(':m1')
    )
}

---不間斷更新。

相關文章
相關標籤/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
本站公眾號
   歡迎關注本站公眾號,獲取更多信息