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') ) }
---不间断更新。