Gradle藉助Groovy語言做爲其配置腳本,使得Gradle變的十分強大,幾乎是無所不能,咱們在掌控這個強大且功能繁多的工具時也比較困難和凌亂,所以本文記錄一些使用過程常見的配置,以備不時之需!java
apply from: "./libraries.gradle"
buildDir = "target" version = '1.0'
gradle task -Pprofile=development
至關於在build.gradle中定義了一個變量profile,因此能夠在上下文中直接使用profile。web
idea { module { downloadJavadoc = false downloadSources = false } }
寫在一塊兒:spring
[compileJava, javadoc, compileTestJava]*.options*.encoding = 'UTF-8'
單獨寫:app
javadoc { options.encoding = "UTF-8" } …
Gradle默認把Classes和Resources分開放,那麼把他們放在一塊兒:maven
sourceSets { main { output.resourcesDir = "${buildDir}/classes/main" } }
指定webdefault.xml是爲了解決在Windows下靜態文件鎖定的問題ide
apply plugin: "jetty" jettyRun { contextPath = '/' reload = 'manual' webDefaultXml = file('webdefault.xml') } httpPort = 8080 stopPort = 8011 stopKey = 'jetty6'
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}!"
test.onlyIf { !Boolean.getBoolean('skip.tests') }
//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') ) }
---不間斷更新。