我正在使用Cake 0.23.0并且很高兴看到已经扩展了任务依赖性。不幸的是,似乎即使是最新版本也无法解决我的问题。 或者我只是做错了什么?
我想要实现的目标
当前行为 得到的序列是 任务初始化x86 - >任务A - >任务B - >任务C - >任务初始化x64
似乎Cake只会尊重任务依赖性。我的定义如下所示:
Task("Compile-All-Platforms")
.IsDependentOn("Init-86")
.IsDependentOn("A")
.IsDependentOn("B")
.IsDependentOn("C")
.IsDependentOn("Init-x64")
.IsDependentOn("A")
.IsDependentOn("B")
.IsDependentOn("C");
答案 0 :(得分:1)
如果你想构建两个大步骤,那么天真的方法就是在辅助函数中封装A,B和C的构建逻辑,然后将它们包装在x86或x64任务中。这里的想法是利用Cake能够为您创建的依赖树,而不是写下Compile-All中的所有依赖项。实际上,这是您想要使用构建编排器的主要原因。
当然,这是使其适用于3个任务和2个平台的简单方法。一个更具可扩展性的解决方案是创建和添加或者一个接受"平台的帮助脚本。参数和构建N个项目。
请注意下面的代码仅显示如何获得您所要求的内容,但需要使用适当的 WithCriteria 指令进行改进。如果按原样使用,则无法仅构建x64。
Task("Compile-x86"){
BuildA();
BuildB();
BuildC();
};
Task("Init-x64")
.IsDependentOn("Compile-x86"){
//Your init code goes here
};
Task("Compile-x64")
.IsDependentOn("Init-x64"){
BuildA();
BuildB();
BuildC();
};
Task("Compile-All-Platforms")
.IsDependentOn("Compile-x64");