当前位置:   article > 正文

gradle构建工具学习系列--002使用gradle的命令行_gradle unknown argument(s) in task definition

gradle unknown argument(s) in task definition

gradle构建工具学习系列


开始使用gradle

在D盘创建一个gradle文件夹并进入其中,创建一个文件,名称为build.gradle,其中的内容为

task helloWorld{
	doLast {
		println 'Hello World!'
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5

然后进入到这个目录当中,执行以下命令

gradle -q helloWorld
  • 1

等待一会(项目构建)之后,控制台会输出Hello World!
在这里插入图片描述
上面命令通过-q定义可选命令行选项quiet,告诉Gradle只输出该task相关的信息。如果不加-q则会输出项目构建的一些信息,如下图所示
在这里插入图片描述
在Gradle的DSL当中,task(helloWorld)和action(doLast)是最重要的语言。名字为doLast的action几乎自表达了它的含义。它是task执行的最后一个action。
build.gradle文件中添加以下内容

task helloWorld {
  doLast{  
	println 'Hello World!'
  } 	
}

task startSession {
  doLast{  
	chant()
  }		
}

def chant() {
	// 使用Ant的任务echo
	ant.echo(message: 'Repeat after me...')
}

// 使用Groovy在java.lang.Number中扩展的times方法创建3个新的task.Groovy自动地暴露一个隐式变量it来指定循环迭代的次数
3.times {
	task "yayGradle$it" {
	   doLast{ 
		println 'Gradle rocks'
	   }	
	}
}

yayGradle0.dependsOn startSession
yayGradle2.dependsOn yayGradle1,yayGradle0
task groupTherapy(dependsOn: yayGradle2)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

再执行以下命令:

gradle groupTherapy
  • 1

结果如下

这里首先执行了startSession任务,然后依次执行了yayGradle0yayGradle1yayGradle2
以上代码首先在chant方法中一行了对Ant任务的调用,而接下来yayGradle等任务采用动态任务的含义,最后引入了dependsOn关键字,这个关键字用于说明task之间的依赖关系。Gradle会确保被依赖的task总会在定义该依赖的task之前执行。
在这里插入图片描述

列出项目中所有可用的task

执行命令

 gradle -q tasks
  • 1

输出结果如下所示
在这里插入图片描述
可以看到这里包含了一些提供提供的任务,但是没有我们上面创建的任务。在上面的命令后面加上--all再执行。

gradle -q tasks --all
  • 1

结果如下
在这里插入图片描述
这里包含了我们创建的任务。同时这里Gradle提供了一个任务组的概念。你可以把它看作是多个task的集群。每个构建脚本都会默认暴露Help tasks任务组,如果某个task不属于一个任务组,就会出现在Other tasks当中,比如我们创建的groupTherapy任务。

指定多个任务

gradle yayGradle0 groupTherapy
  • 1

在这里插入图片描述
这里需要注意的是,任务通常只会执行一次,无论它们是在命令行中指定的还是作为另一个任务的依赖。

任务名字缩写

Gradle最有用的特性之一就是能够以驼峰式的缩写在命令行上执行任务。比如上面的命令可以缩写为以下方式

gradle yG0 gT
  • 1

在这里插入图片描述

需要注意的是,任务名字的缩写必须是唯一的。比如在上面的文件当中添加以下内容

task generateTests {
   doLast{ 
	println 'generateTests!'
   }
}
  • 1
  • 2
  • 3
  • 4
  • 5

再执行缩写的命令,报错信息如下

* What went wrong:
Task 'gT' is ambiguous in root project 'gradle'. Candidates are: 'generateTests', 'groupTherapy'.
  • 1
  • 2

在这里插入图片描述
从错误信息不难看出,这里缩写产生了歧义。

在执行中排除一个任务

执行以下命令

gradle groupTherapy -x yayGradle0
  • 1

在这里插入图片描述
可以看出,在上面通过命令-x排除了任务yayGradle0。

更多的命令行选项

在控制输入命令查看帮助选项

gradle --help
  • 1

在这里插入图片描述
此时就可以获取到常见参数的列表,比如-q开启安静模式,只打印错误日志

-q, --quiet               Log errors only.
  • 1

比如-x 用于指定某个任务被排除执行

-x, --exclude-task        Specify a task to be excluded from execution.
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/459392
推荐阅读
相关标签
  

闽ICP备14008679号