1.gradle构建脚本在build.gradle中,脚本采用groovy语法,project和task是脚本中最重要的两个概念。
2.task语法及执行:
task的几种写法:
a、task hello{
doLast{
println 'hello world'
}
}
b、hello << { 相当于dolast
println 'hello dolast'
}
c、hello.doFirst{
println 'doFirst'
}
d、hello.doLast{
println 'doLast'
}
e、task hello2 << {
println 'hello2 world'
}
运行task指令:gradle -q hello,省略-q后会打印出额外的信息
3.任务依赖写法:
task intro(dependsOn:hello) << {
println "I'm Gradle"
}
4.动态任务及循环:
task count << {
4.times{println "$it"}
}
:gradle -q count 输出四次循环,0,1,2,3
4.times { counter -> task "task$counter" << {
println "I'm task number $counter"
}
}
:gradle -q task3 输出Im task number3
5.自定义task属性及引用
task myTask{
ext.myProperty = "myValue"
}
task printTask{
println myTask.myProperty
println "greeting from the $printTask.name task"
}
用ext关键字来代表任务,用“.”号后跟属性名来创建属性
在字符串中可以通过$+任务名可以用来引用任务
6.使用ant任务
task loadfile << {
def files = file('../test').listFiles().sort()
files.each{File file->
if(file.isFile()){
ant.loadfile(srcFile:file,property:file.name)
println "*** $file.name ***"
println "${ant.properties[file.name]}"
}
}
}
使用ant中的loadfile方法
7.使用默认的任务:defaultTasks 'clean','run'
8.使用DAG(有向非循环图)进行配置
task distribution <<{
println "We build the zip with version = $version"
}
task release (dependsOn :'distribution')<<{
println 'We release now'
}
gradle.taskGraph.whenReady {
taskGraph->
if(taskGraph.hasTask(release)){
version = '1.0'
}else {
version = '1.0-SNAPSHOT'
}
}
gradle分配置阶段和执行阶段,配置阶段完成后,gradle就知道所有需要被执行的任务。这样我们就可以利用这些信息了解哪些任务被执行了。下面的例子来判断任务执行完成后,release任务是否被执行。
9.常用的语法:
apply plugin: 'java' 这是一个java项目
gradle clean:清楚上一次构建
gradle build:执行构建
gradle assemble:只编译java源码,生成jar包,不执行测试。
gradle check:只进行测试,不生成build目录。
10. dependencies,java项目依赖外部的jar包,gradle跟进提供的库去下载并关联
repositories{
mavenCentral()
}
dependencies {
compile group:'commons-collections',name:'commons-collections',version:'3.2'
testCompile group:'junit',name:'junit',version:'4.0+'
}
gradle根据mavencentral库下载dependencies中的jar包文件
11. 定义项目,修改Manifest.mf中的内容
sourceCompatibility = 1.5
version = '1.0'
jar {
manifest {
attributes 'Implementation-Title':'Gradle Quickstart',
'Implementation-Version':version
}
}
version是当前的版本号,sourceCompatibility是jdk版本
12.发布项目
uploadArchives {
repositories {
flatDir {
dirs 'repos'
}
}
}
在项目根目录下生成repos目录,里面生成了可发布的jar包和xml文件等。
12.自定义变量及属性
def dest = "this is myself" 通过def自定义变量
ext {
springVersion = "3.1.0.RELEASE"
emailNotification = "build@master.org"
}
ext可以一次定义多个属性
13.setter和getter语法
println project.buildDir
println getProject().getBuildDir()
project.buildDir = 'target'
getProject().setBuildDir('target')
task hello<<{
println 'Hello world'
println project.buildDir
}
14.方法的调用
test.systemProperty 'some.prop','value'
test.systemProperty('some.prop','value')
方法的调用可以带括号也可以不带。
15.groovy集合
apply plugin:'java'
test.includes = ['org/gradle/api/**','org/gradle/internal/**']
List<String> list = new ArrayList<String>()
list.add('org/gradle/api**')
list.add('org/gradle/internal/**')
test.includes = list
Map<String,String> map = [key1:'value',key2:'value2']
16.跳过任务
使用断言:
task hello <<{
println 'hello world'
}
hello.onlyIf{!project.hasProperty('skipHello')}
抛出StopExecutionException:
task compile <<{
println "We are doing the compile"
}
compile.doFirst{
if(true){throw new StopExecutionException()}
}
task myTask(dependsOn:'compile')<<{
println 'I am not affected'
}
任务的enabled属性:
task disableMe <<{
println 'ni dou bu hui zhi xing ,ni hai shuo zhe me duo hua'
}
disableMe.enabled = false
17.定位文件
File configFile = file('src/config.xml')
configFile = file(configFile.absolutePath)
println configFile.path
configFile = file(new File('src/config.xml'))
18.复制文件
task copyTask(type:Copy){
from 'src/main/webapp'
into 'build/explodedWar'
}
2.task语法及执行:
task的几种写法:
a、task hello{
doLast{
println 'hello world'
}
}
b、hello << { 相当于dolast
println 'hello dolast'
}
c、hello.doFirst{
println 'doFirst'
}
d、hello.doLast{
println 'doLast'
}
e、task hello2 << {
println 'hello2 world'
}
运行task指令:gradle -q hello,省略-q后会打印出额外的信息
3.任务依赖写法:
task intro(dependsOn:hello) << {
println "I'm Gradle"
}
4.动态任务及循环:
task count << {
4.times{println "$it"}
}
:gradle -q count 输出四次循环,0,1,2,3
4.times { counter -> task "task$counter" << {
println "I'm task number $counter"
}
}
:gradle -q task3 输出Im task number3
5.自定义task属性及引用
task myTask{
ext.myProperty = "myValue"
}
task printTask{
println myTask.myProperty
println "greeting from the $printTask.name task"
}
用ext关键字来代表任务,用“.”号后跟属性名来创建属性
在字符串中可以通过$+任务名可以用来引用任务
6.使用ant任务
task loadfile << {
def files = file('../test').listFiles().sort()
files.each{File file->
if(file.isFile()){
ant.loadfile(srcFile:file,property:file.name)
println "*** $file.name ***"
println "${ant.properties[file.name]}"
}
}
}
使用ant中的loadfile方法
7.使用默认的任务:defaultTasks 'clean','run'
8.使用DAG(有向非循环图)进行配置
task distribution <<{
println "We build the zip with version = $version"
}
task release (dependsOn :'distribution')<<{
println 'We release now'
}
gradle.taskGraph.whenReady {
taskGraph->
if(taskGraph.hasTask(release)){
version = '1.0'
}else {
version = '1.0-SNAPSHOT'
}
}
gradle分配置阶段和执行阶段,配置阶段完成后,gradle就知道所有需要被执行的任务。这样我们就可以利用这些信息了解哪些任务被执行了。下面的例子来判断任务执行完成后,release任务是否被执行。
9.常用的语法:
apply plugin: 'java' 这是一个java项目
gradle clean:清楚上一次构建
gradle build:执行构建
gradle assemble:只编译java源码,生成jar包,不执行测试。
gradle check:只进行测试,不生成build目录。
10. dependencies,java项目依赖外部的jar包,gradle跟进提供的库去下载并关联
repositories{
mavenCentral()
}
dependencies {
compile group:'commons-collections',name:'commons-collections',version:'3.2'
testCompile group:'junit',name:'junit',version:'4.0+'
}
gradle根据mavencentral库下载dependencies中的jar包文件
11. 定义项目,修改Manifest.mf中的内容
sourceCompatibility = 1.5
version = '1.0'
jar {
manifest {
attributes 'Implementation-Title':'Gradle Quickstart',
'Implementation-Version':version
}
}
version是当前的版本号,sourceCompatibility是jdk版本
12.发布项目
uploadArchives {
repositories {
flatDir {
dirs 'repos'
}
}
}
在项目根目录下生成repos目录,里面生成了可发布的jar包和xml文件等。
12.自定义变量及属性
def dest = "this is myself" 通过def自定义变量
ext {
springVersion = "3.1.0.RELEASE"
emailNotification = "build@master.org"
}
ext可以一次定义多个属性
13.setter和getter语法
println project.buildDir
println getProject().getBuildDir()
project.buildDir = 'target'
getProject().setBuildDir('target')
task hello<<{
println 'Hello world'
println project.buildDir
}
14.方法的调用
test.systemProperty 'some.prop','value'
test.systemProperty('some.prop','value')
方法的调用可以带括号也可以不带。
15.groovy集合
apply plugin:'java'
test.includes = ['org/gradle/api/**','org/gradle/internal/**']
List<String> list = new ArrayList<String>()
list.add('org/gradle/api**')
list.add('org/gradle/internal/**')
test.includes = list
Map<String,String> map = [key1:'value',key2:'value2']
16.跳过任务
使用断言:
task hello <<{
println 'hello world'
}
hello.onlyIf{!project.hasProperty('skipHello')}
抛出StopExecutionException:
task compile <<{
println "We are doing the compile"
}
compile.doFirst{
if(true){throw new StopExecutionException()}
}
task myTask(dependsOn:'compile')<<{
println 'I am not affected'
}
任务的enabled属性:
task disableMe <<{
println 'ni dou bu hui zhi xing ,ni hai shuo zhe me duo hua'
}
disableMe.enabled = false
17.定位文件
File configFile = file('src/config.xml')
configFile = file(configFile.absolutePath)
println configFile.path
configFile = file(new File('src/config.xml'))
18.复制文件
task copyTask(type:Copy){
from 'src/main/webapp'
into 'build/explodedWar'
}