2013-03-20 56 views
7

您好我有多重的gradle项目设置gradle这个“建设”的任务混乱

-root_project 
|-sub_project1 
|-sub_project2 
|-sub_project3 

所有的伟大工程,但有一两件事让我发疯。在我的构建脚本:

defaultTasks 'build' <- this works just fine 

task buildroom (description: 'This task is invoked by build room script, invokes default task plus publishes artifacts') { 
// dependsOn('build') <-- this doesn't work 

// alternative 
dependsOn(":sub_project1:build") 
dependsOn(":sub_project2:build") 

当我在命令行“gradlew” <调用 - 默认任务被执行

当我在命令行“gradlew任务” <叫 - 下“所有任务的任务从可运行根项目”我看到 '构建'

,但是当我尝试添加dependsOn( '构建'),dependsOn( ':建设')或dependsOn( ':根:构建')它告诉我

什么出错:执行任务':任务'失败。

无法确定任务':buildroom'的相关性。

'基地' 插件添加 '组装' 和 '干净' 的任务,但不建...

任何提示?

回答

10

build任务由java-base插件声明。很可能您的根项目不会(直接或间接)应用java-base,因此没有build任务。这就是为什么dependsOn("build")会在相同的项目中添加一个名为build的任务依赖项,最终导致错误。 defaultTasks是不同的:

  • 它只接受任务名称(而dependsOn也接受任务路径和Task对象)。
  • 其任务名称被解析为任务,就像任务名称已经在命令行中输入一样。换句话说,所有项目都会搜索具有给定名称的任务,并返回一组匹配任务。
+2

感谢Peter,现在明白了对于detaultTasks **所有的子项目都会搜索一个具有给定名称的任务,并返回一组匹配的任务**这一切都是有道理的。谢谢你的回答。 – 2013-03-20 22:49:59

+0

好吧,还有一些其他任务如何调用这个'java build'? – 2016-02-01 09:40:38