Gradle 无任务梯度同步

Gradle 无任务梯度同步,gradle,build.gradle,Gradle,Build.gradle,这与安卓系统无关,也与我在谷歌上搜索“gradlesync命令”的一切无关 我想同步几个目录。有效的是 task mysync1 { dependsOn dep1, dep2, ... from "src1" into "dst1" } task mysync2 { dependsOn dep1, dep2, ... from "src2" into "dst2" } ... task mysync { depends on mysync1

这与安卓系统无关,也与我在谷歌上搜索“gradlesync命令”的一切无关

我想同步几个目录。有效的是

task mysync1 {
    dependsOn dep1, dep2, ...
    from "src1"
    into "dst1"
}
task mysync2 {
    dependsOn dep1, dep2, ...
    from "src2"
    into "dst2"
}
...
task mysync {
    depends on mysync1, mysync2, ....
}
但我讨厌创建我永远不会手动调用的任务(尤其是它会使
梯度任务的输出变得混乱)。所以我试过了

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
任务)

为什么它与
复制
一起工作

它之所以有效,是因为它是注释中提到的方法

有解决办法吗

是的,有一个使用任务的解决方案,因为没有名为
sync
的方法

task megasync(){
dependsOn dep1,dep2。。。。
['src1':'dest1','src2':'dest2',…]每个{
src,dest->
任务同步(类型:同步,覆盖:真){
来自src
进入目的地
}
sync.execute()
}
}
另一个解决方案是创建一个名为sync的方法,该方法执行
sync
任务(同样,
overwrite
必须设置为
true

此外,如果要对每个同步操作使用“保留”属性,则在表示列表的方式中需要一些变通方法。可能是,
['src1':['dest1','preserve_variables..],'src2':…]

如何找出同步块中允许的内容? 我尝试执行以下任务:

我查看了stacktrace,发现
sync
是中的一个方法,它有一个返回值。也许,这就是执行
print
的原因,错误
找不到方法sync()
没有引发,而是因为没有返回有效对象而引发了
NPE

为什么它与
复制
一起工作

它之所以有效,是因为它是注释中提到的方法

有解决办法吗

是的,有一个使用任务的解决方案,因为没有名为
sync
的方法

task megasync(){
dependsOn dep1,dep2。。。。
['src1':'dest1','src2':'dest2',…]每个{
src,dest->
任务同步(类型:同步,覆盖:真){
来自src
进入目的地
}
sync.execute()
}
}
另一个解决方案是创建一个名为sync的方法,该方法执行
sync
任务(同样,
overwrite
必须设置为
true

此外,如果要对每个同步操作使用“保留”属性,则在表示列表的方式中需要一些变通方法。可能是,
['src1':['dest1','preserve_variables..],'src2':…]

如何找出同步块中允许的内容? 我尝试执行以下任务:

我查看了stacktrace,发现
sync
是中的一个方法,它有一个返回值。也许,这就是执行
print
的原因,错误
找不到方法sync()
没有引发,而是因为没有返回有效对象而引发了
NPE


项目中有一个copy()方法。没有方法sync()@这解释了为什么我找不到任何文档:但是,
sync{…}
做什么呢?不幸的是,这就是我对groovy魔力的理解停止的地方。我所能说的是,用blabla替换它会让gradle抱怨缺少blabla方法。但我在任何地方都找不到任何记录的sync方法。Project中有一个copy()方法。没有方法sync()@这解释了为什么我找不到任何文档:但是,
sync{…}
做什么呢?不幸的是,这就是我对groovy魔力的理解停止的地方。我所能说的是,用blabla替换它会让gradle抱怨缺少blabla方法。但我在任何地方都找不到任何记录的同步方法。
task test{
    sync{
        print "Testing"  // This executes, but NPE is raised for `sync` on
                        // some other default sync methods
    }
}