这与Android以及我可以谷歌出去的所有内容无关" gradle sync命令"。
我想同步几个目录。有效的是
task mysync1 {
dependsOn dep1, dep2, ...
from "src1"
into "dst1"
}
task mysync2 {
dependsOn dep1, dep2, ...
from "src2"
into "dst2"
}
...
task mysync {
depends on mysync1, mysync2, ....
}
但我讨厌创建我永远不会手动调用的任务(尤其是它会使gradle tasks
的输出混乱)。所以我试过
task mysync {
dependsOn dep1, dep2, ...
doLast {
sync {
from "src1"
into "dst1"
}
sync {
from "src2"
into "dst2"
}
...
}
}
但我收到了错误
Could not find method from() for arguments [src1] on task ':mysync'.
有解决方案吗?这是个坏主意吗?
它如何与copy
一起使用?
如何找出sync
块内允许的内容(我只能找到Sync
任务)?
答案 0 :(得分:0)
为什么它适用于
copy
?
这是有效的,因为copy是评论中提到的Project JB Nizet方法。
有解决方案吗?
是的,有一个使用任务Sync的解决方案,因为没有名为sync
的方法。
task megasync() {
dependsOn dep1,dep2....
['src1':'dest1','src2':'dest2',...].each{
src,dest->
task sync(type:Sync,overwrite:true){
from src
into dest
}
sync.execute()
}
}
另一个解决方案是创建一个名为sync的方法来执行Sync
任务(同样,overwrite
必须设置为true
)。
此外,如果要对每个同步操作使用保留属性,则表示列表的方式需要一些解决方法。也许是,['src1':['dest1','preserve_variables..'],'src2':...]
如何找出同步块内允许的内容? 我试图执行以下任务:
task test{
sync{
print "Testing" // This executes, but NPE is raised for `sync` on
// some other default sync methods
}
}
我查看了堆栈跟踪,发现sync
是FileOperations.java中的一个方法,它有一个返回值。也许,这就是print
执行的原因,并且不会引发错误Could not find method sync()
,而是因为没有返回有效对象而引发NPE
。