1

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

当前正在编译的实现具有打包步骤依赖于 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

谢谢!

4

0 回答 0