gradle中的空依赖项?(惰性下载的解决方案?)

gradle中的空依赖项?(惰性下载的解决方案?),gradle,Gradle,我希望能够写出这样的东西: dependencies { myConfig computeMyDependency() } 我想说“没有依赖性”。返回null或空映射不起作用。我想我可以返回文件('/dev/null'),但这很奇怪,很粗糙而且不可移植。是否有某种类型的空依赖构造函数可以使用 一些背景: 我真正想做的是将依赖项下载延迟到实际执行时间。如果一个用户编写一个任务,例如一个复制任务,那么: task copyMyDependencyFile(type: Copy) {

我希望能够写出这样的东西:

dependencies {
    myConfig computeMyDependency()
}
我想说“没有依赖性”。返回null或空映射不起作用。我想我可以返回
文件('/dev/null')
,但这很奇怪,很粗糙而且不可移植。是否有某种类型的空依赖构造函数可以使用

一些背景:

我真正想做的是将依赖项下载延迟到实际执行时间。如果一个用户编写一个任务,例如一个复制任务,那么:

task copyMyDependencyFile(type: Copy) {
    from { configurations.myConfig
               .grep { it.name.endsWith("zip") }
               .collect() { zipTree it }
         }
    into targetDir
}

然后运行
/gradlew tasks
实际上会执行
from
闭包,这让我非常难过。(使用Gradle 2.4)

快速解决方法还可以是:

task copyMyDependencyFile << {
   copy {
      from { 
         configurations.
         compile.
         grep { it.name.endsWith("jar") }.
         collect { zipTree it }
      }
      into targetDir
   }
}

请自己尝试后者。

返回
文件('.')
也“有效”(即
/gradlew任务
不会失败),并且希望更便于移植,但如果有适当的“null”依赖项则更好。显然,
/gradlew tasks
将解析任务输入和输出,以显示任务依赖关系-您可以分享一个可运行的示例吗?只需为
computeMyDependeny()
添加一个定义,它将字符串返回到不存在的工件。我的观点是,这不应该阻止
gradle tasks
工作。请相信我的回答。我认为这会模糊任务的输入和输出。根据gradle论坛的工作人员的说法,正是这些输入和输出导致了问题,因为
gradle tasks
试图显示任务相关性。我想这整件事显示了太多抽象的危险。工件和文件依赖项不添加任务依赖项信息,因此不应该得到解决,但因为它们只是使用高级依赖项抽象,所以无论如何都会发生……在这种情况下,是的,输入和输出将无法按预期工作。
task copyMyDependencyFile(type: Copy) {
   doLast {
      from { 
         configurations.
         compile.
         grep { it.name.endsWith("jar") }.
         collect { zipTree it }
       }
       into targetDir
    }
}