SBT:发现任务的先前版本

时间:2017-04-27 19:34:53

标签: sbt sbt-plugin

目标是一个主插件,可以根据使用主插件的项目中的设置来决定运行哪些其他插件。在这一点上,它已成为学术界,我学到了很多东西。

正在编译的当前实现的打包步骤取决于taskDyn,taskDyn要么进行插件的键调用(手动挖出插件源并复制到taskDyn中),要么调用之前存在的包任务的版本主插件参与其中。逻辑和布线就在那里,当谓词有效时,会调用插件调用,但调用前一个任务是难以理解的。

我目前必须找到旧包装器的代码引入了循环依赖,因为范围工件依赖于taskDyn,当任务突然想知道范围工件时(至少我现在这样做),繁荣

val original : TaskKey[(Artifact, File)] = packagedArtifact in(Compile, packageBin) val osgiTask: Def.Initialize[Task[File]] = Def.taskDyn[File] { if (featureFile.value.exists) { addArtifact(Def.setting(Artifact(moduleName.value, "xml", "xml", "feature")), featureFile.toTask) OsgiKeys.bundle } else { Def.task(original.toTask.value._2) } }

如果这是一个简单的问题,我只需要弄清楚如何将原始/默认任务分配给依赖项。可能是这个问题无法解决 - 可能无法发现和缓存分配给创建范围工件的任务的原始版本,或者如果不创建循环依赖关系,则可能无法使用它。如果是这样,你能想象另一种方法吗?

当前来源位于https://gist.github.com/briantopping/274204cc527669baa19b80536ce8bd11

谢谢!

0 个答案:

没有答案