gradle

Gradle Task


build.gradle通常称之为构建脚本;构建脚本中定义了一个项目和包含的任务

————————————————————————————————————————

1、不使用build.gradle默认文件名

一般情况下执行任务,使用gradletask名,默认执行build.gradle文件中的任务

如果task要引用另外的构建脚本,可以使用-b参数显式声明。


$ gradle -b myProject.gradle sayHello


————————————————————————————————————————

2、指定默认执行的task

defaultTasks'sayHello'


————————————————————————————————————————

3、屏蔽log信息

$ gradle-q quiet安静的)


————————————————————————————————————————

4、列出project的所有task

$ gradletasks

列出project的所有属性

$ gradleproperties

可以看到projectDirbuildFile


定义一个task,对属性值进行输出,若在字符串中引用property,需要‘$属性值’

taskprintProperties {

printlnprojectDir

printlnbuildFile

}


$ gradle printProperties


————————————————————————————————————————

5、任务的同名覆盖

taskprintProperties {

printlnname

printlnproject.name

println"the build script file is: '$buildFile.name'"

}

$ gradle printProperties


————————————————————————————————————————

6、可以使用命令行一次执行多个任务,gradle会按命令中的顺序来依次执行每个任务,并且也会执行每个任务中的依赖,每个任务只会被执行一次;

taskintro1(dependsOn: sayHello)<< {

}


taskintro2(dependsOn: sayHello)<<{

}


$ gradleintro1 intro2


————————————————————————————————————————

7、可以使用-x参数来排除不需要执行的任务

$gradle intro1 -x sayHello


————————————————————————————————————————

8、任务的简写

在执行任务时,只要键入的字符足以唯一区分出一个任务即可省去其它字符.

$ gradlesa (sayHello)




JavaPlugin



1、在没有引入java插件时,统计task数目和properties数目

# gradle tasks | wc -l 29

#gradle properties | wc -l 70

并且验证properties中没有对java的支持,可以如下进行验证

# gradle properties | grep java


引入Java插件

applyplugin: 'java'


重新统计projecttaskproperties

# gradle tasks | wc -l 55

#gradle properties | wc -l 110


结论:当引入java插件时,将会引入新的tasksproperties


libsDirName= 'mylib'

archivesBaseName= 'gradle-sample'


————————————————————————————————————————

2、在默认java目录下,创建java文件,执行build,看各个子task之间的依赖关系

体会gradle增量构建的特性(up-to-date)

$gradle build

$gradle assemble

$gradle test



总结:gradlebuild任务中子任务的相互依赖关系,增量式构建 up-to-date


build:编译,单元测试以及打包

assemble:编译并且打jar,但不会执行单元测试

test:运行单元测试

check:编译并且测试代码,如果添加了Code-quality插件,该任务同时会对代码风格进行检查


gradleclean 删除完整的build文件夹

gradleclean<TaskName> 删除某个子任务产生的文件 例如, gradlecleanCompileJava



————————————————————————————————————————

3、默认java项目的文件结构

该插件将会依据如下目录结构来检索你的项目

src/main/java

src/main/resources

src/test/java

src/test/resources


是因为java插件中默认设置了这样的结构,当文件还未创建时,打印出默认值。

tasksourceSetJavaProperties << {

sourceSets {

main {

println"java.srcDirs = ${java.srcDirs}"

println"resources.srcDirs = ${resources.srcDirs}"

}

test {

println"java.srcDirs = ${java.srcDirs}"

println"resources.srcDirs = ${resources.srcDirs}"

}

}

}


可以根据默认值创建目录结构:

taskcreateJavaProject << {

sourceSets*.java.srcDirs*.each{ it.mkdirs() }

sourceSets*.resources.srcDirs*.each{ it.mkdirs()}

}


————————————————————————————————————————

4sourceSet

不需要任何配置,java插件默认包含mainand test source sets

对每个文件集合增加了3task,根据sourceSest的名称进行命名:compile<SourceSet>Java,process<SourceSet>Resources, and <SourceSet>Classes.

为该集合的文件执行该任务。

Forexample, compileJava applies to the main source test, butcompileTestJava applies to the test source set.


$ gradletasks --all


增加一个sourceset,只需要将sourceset的名称放在sourceSets中即可。

sourceSets{

api

}


$ gradletasks –all

增加了3task,分别为

apiClasses

compileApiJava

processApiResources


建立apisourceset的目录结构:

taskcreateApiFolder << {

sourceSets.api.java.srcDirs.each{ it.mkdirs() }

sourceSets.api.resources.srcDirs.each{ it.mkdirs()}

}


$gradle createApiFolder


api中增加代码,添加main中代码对api的依赖。

mkdir-p src/api/java/gradle/sample

visrc/api/java/gradle/sample/ReadWelcomeMessage.java

visrc/main/java/gradle/sample/Sample.java //implementsReadWelcomeMessage



$gradle classes

执行失败


解决方案:classpath中添加apiclasspath,并且classes依赖于apiClasses

sourceSets{

api

main {

compileClasspath = compileClasspath +files(api.output.classesDir)

}

}

classes.dependsOnapiClasses


————————————————————————————————————————

5gradlejar包得依赖管理

repositories{

mavenCentral()

}


dependencies{

compile 'org.springframework:spring-webmvc:4.0.6.RELEASE'

testCompile'junit:junit:4.11'

}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值