gradle学习(8)-gradle的命令行

(以下所有内容都是根据官方文档学习。如果你对gradle有兴趣,希望你能直接学习官方文档,官方文档是最权威的。而且这样才能产生2份有意义的学习资料)


1.执行多个任务


在命令行下,要想执行多个任务,可以在gradle关键字后面跟多个任务名,之间要用空格隔开,执行的顺序按照你的输入的顺序执行。例如我们要执行编译和测试的任务。可以在命令行下输入:


D:\GRADLE~2\0109>gradle compile test
:compile1
nihao
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE

BUILD SUCCESSFUL

Total time: 2.787 secs

可以看出先执行compile,然后是test。那么如果我倒过来呢?


D:\GRADLE~2\0109>gradle test compile
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:compile1
nihao

BUILD SUCCESSFUL

Total time: 2.819 secs

还是这样的顺序,因为这个是gradle自带的任务,肯定要按严格的顺序执行。所以没有说服力,我们现在写一个自己的。


build.gradle


apply plugin:'java'

task test1<<{
    println "test1"
}

task compile1 <<{
    println "compile1"
}

这个时候按不同的顺序执行一下




这下验证了上面的说法,确实是按照输入的顺序执行的。


2.依赖任务


其实刚才我们让test先执行,compile后执行的时候已经可以看出,gradle会将命令行中列举的任务的依赖任务也执行了。不然先执行test肯定会报错了,就是因为test任务依赖于compile等任务,所以我们执行test任务的时候,它的依赖任务会先被执行,然后才执行test任务,命令行的输出看的很明显。

而且被依赖的任务只会被执行一次。


task compile1 <<{
	println 'compiling source'
}

task compileTest1(dependsOn:compile1) <<{
	println 'compiling unit tests'
}
task test1(dependsOn:[compile1,compileTest1])<<{
	println 'running unit tests'
}

task dist1(dependsOn:[compile1,test1])<<{
	println 'build the distribution'
}

看上面的例子,dist1依赖compile1和test1。然后test1又依赖compile1和compileTest1。疏导一下关系

dist1依赖:compile1、compileTest1

test1依赖:compile1、compileTest1


依据执行的顺序与命令行的列举顺序有关,且被依赖的任务只会被执行一次的这两个原则,思考一下输出应该是什么样子。

我的猜测是:


compiling source
compiling unit tests
running unit tests
build the distribution


看看对不对




还好,蒙对了。


3.排除任务


gradle提供了排除某个特定任务的语法,不执行所依赖的任务中的某个任务,来看一下命令


gradle task1 -x task2


在执行task1任务时不执行task1所依赖的task2任务。而且只删除task2有依赖,而task1没有依赖的任务。

同样我们来看看执行下面的命令


gradle -q dist1 -x test1

考虑一下执行的结果。我自己先猜一下,刨除test1中的两个依赖项目。就剩下了


compiling source
build the distribution


验证一下




4.倔强的构建方式


默认情况下,gradle在构建过程中遇到错误会自动停止,这样有些错误你无法一次性发现。但是你也可以去设置:即使遇到错也要倔强的构建,不撞南墙不回头。

这样的话等执行完毕后,再把所有的错误都打印出来,是不是很好呢。使用--continue属性。(这块还不太清楚怎么使用,以后知道了再补充)


5.智能匹配


执行任务的时候,任务名不需要写全,但是得能够匹配唯一一个。


task compile1 <<{
	println 'compiling source'
}

task compileTest1 <<{
	println 'compiling unit tests'
}
task test1<<{
	println 'running unit tests'
}

task dist1<<{
	println 'build the distribution'
}

task dist2 <<{
	println 'dist2'
}

例如上面的任务,我们可以通过comile匹配compile1。但是dist就不能匹配dist1,因为还有一个dist2也匹配。执行的情况如下:




对于有2个单词组成的任务名,我们可以通过首字母的缩写匹配该任务。




6.选择特定的文件去执行


比如我们去执行同目录下sob目录下的的user.gradle构建文件。sob/user.gradle文件内容如下


task hello<<{
	println "using build file '$buildFile.name' in '$buildFile.parentFile.name'"
}

执行该文件


D:\GRADLE~2\0109>gradle -q -b sob/user.gradle hello
using build file 'user.gradle' in 'sob'

可以看出要在命令行上用-b 后面跟目录来表示指定的文件。任务在前或在后效果都是一样的。


D:\GRADLE~2\0109>gradle -q hello -b sob/user.gradle
using build file 'user.gradle' in 'sob'

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值