防止Gradle Zip任务在执行任务之前下载依赖项
我有一个简单的gradle任务,可以打开maven jar(例如)。如何使该任务在执行之前不下载jar防止Gradle Zip任务在执行任务之前下载依赖项,gradle,Gradle,我有一个简单的gradle任务,可以打开maven jar(例如)。如何使该任务在执行之前不下载jar apply plugin:'base' repositories { mavenCentral() } configurations.create 'myDep' dependencies { myDep 'commons-io:commons-io:1.0' } task zip(type:Zip) { from { configurations.myDep.collect {
apply plugin:'base'
repositories { mavenCentral() }
configurations.create 'myDep'
dependencies {
myDep 'commons-io:commons-io:1.0'
}
task zip(type:Zip) {
from { configurations.myDep.collect { zipTree(it) } }
}
如果我运行“gradle任务”,它将意外下载jar:
$ gradle tasks
Download http://repo1.maven.org/maven2/commons-io/commons-io/1.0/commons-io-1.0.pom
Download http://repo1.maven.org/maven2/commons-io/commons-io/1.0/commons-io-1.0.jar
:tasks
我认为,
gradletasks
是一个特例,因为它需要评估所有任务的输入,以确定(并显示)它们的任务依赖性。一般来说,只有在Gradle决定执行zip
任务后,才会对zip任务的输入进行评估(从而下载Jar)。这将发生在构建任务执行图的过程中(再次确定任务依赖关系),即在执行任何任务之前(但仅当Gradle决定执行zip
)
如果在gradle任务
的情况下必须阻止下载Jar,则可以将的配置从
推迟到zip.doFirst{}
,但这不是一个通用的解决方案,可能会导致其他问题(最新检查无法正常工作,任务依赖关系无法自动推断)。,我现在明白了。这是不幸的,因为“gradletasks”可能是大多数用户运行的第一个命令。我有一些大于200MB的依赖项。我认为gradle不必下载依赖项来打印任务列表。通常情况下不需要下载,但在这种特殊情况下确实需要下载,并且仅适用于myDep
上的依赖项。也许zipTree
可以接受Iterable
。这样您就不必使用collect
,配置也就无法在该阶段得到解决,问题也就消失了。