因此,我创建了一个档案,说一场战争,然后为了方便起见,我想另一个名称不同的副本。事情是我不希望这个复制任务减慢这个相当大的构建的其余部分。可以异步执行它?如果是这样,怎么样?异步gradle复制任务?
回答
import java.util.concurrent.*
...
def es = Executors.newSingleThreadExecutor()
...
war {
...
doLast{
es.submit({
copy {
from destinationDir.absolutePath + File.separator + "$archiveName"
into destinationDir
rename "${archiveName}", "${baseName}.${extension}"
}
} as Callable)
}
}
这样做吗?有用。该文件被复制,但IDK如何测试以查看它是否实际上是一个异步副本。 – user447607
在发生其他事情之前,doLast可以防止它被解雇。就像创造需要复制的战争一样。 – user447607
阅读以上内容,我刚刚回答了我自己的问题。 – user447607
在某些情况下,为此使用parallel execution feature非常方便。它仅适用于多项目构建(您要并行执行的任务必须位于不同的项目中)。
project('first') {
task copyHugeFile(type: Copy) {
from "path/to/huge/file"
destinationDir buildDir
doLast {
println 'The file is copied'
}
}
}
project('second') {
task printMessage1 << {
println 'Message1'
}
task printMessage2 << {
println 'Message2'
}
}
task runAll {
dependsOn ':first:copyHugeFile'
dependsOn ':second:printMessage1'
dependsOn ':second:printMessage2'
}
默认输出:
$ gradle runAll
:first:copyHugeFile
The file is copied
:second:printMessage1
Message1
:second:printMessage2
Message2
:runAll
输出与--parallel
:
$ gradle runAll --parallel
Parallel execution is an incubating feature.
:first:copyHugeFile
:second:printMessage1
Message1
:second:printMessage2
Message2
The file is copied
:runAll
由于dbUnit存在一些技术债务,我们无法使用它。问题是,真的没有理由不能并行复制文件,所以我宁愿写它,以便它始终如此。 – user447607
- 1. 在gradle中复制任务
- 2. 异步任务从api的异步任务不运行异步
- 3. 异步任务
- 4. 异步任务
- 5. 异步任务
- 6. 异步任务vs任务
- 7. Android Studio Gradle构建复制任务
- 8. Gradle Copy任务不复制文件
- 9. 构建后的Gradle复制任务
- 10. 切换异步任务同步任务
- 11. Android异步任务不重复
- 12. 呼叫异步任务反复
- 13. 异步重复计划任务
- 14. 异步任务暂停循环恢复
- 15. 同步异步任务
- 16. android异步任务
- 17. 异步任务angularjs
- 18. SignalR异步任务
- 19. 异步任务,BufferedReader
- 20. PHP异步任务
- 21. 与异步任务
- 22. 块异步任务
- 23. 动态gradle复制任务不执行任务主体
- 24. 异步任务异常Android
- 25. Rails执行任务异步控制器
- 26. 异步运行控制台任务
- 27. 强制C#异步任务是懒惰?
- 28. 异步任务VS异步无效
- 29. Dired复制异步
- 30. 使用异步任务取消任务
不知道,如果这个实际工作,但你可以试试看:HTTP:/ /stackoverflow.com/a/38528039/745574 – RaGe
真的很好@RaGe,感谢您找到这个! – Opal
我想我有这个工作。多谢你们。 :-)你想作为答案发布吗? – user447607