如何创建一个重用includeFilter键的sbt插件?

时间:2012-12-08 10:22:18

标签: scala plugins sbt protocol-buffers

我正在为Sbt。

创建一个protobuf插件

我创建了一个名为TaskKey的新protoc,将.proto个文件转换为.java个文件。

val protoc = TaskKey[Seq[File]]("protoc", "Convert proto to java.")

我还将protoc任务注入了sbt.Keys.sourceGenerators

sourceGenerators <+= protoc

正如Plugins Best Practices所述,我重复使用SBT的现有sbt.Keys.sources来指示源.proto文件。我写了一些与这些相当的代码:

// To generate .java from main .proto
protoc in Compile <<= (sources in protoc in Compile, ...) map { (protoSources, ...) =>
  ...
}

// To generate .java from test .proto
protoc in Test <<= (sources in protoc in Test, ...) map { (protoSources, ...) =>
  ...
}

我在尝试重用sbt.Keys.includeFilter时遇到了问题。我试过这个:

// For test protos being compiled
includeFilter in unmanagedSources in protoc in Test := "*.proto"

// For test protos being included
includeFilter in ProtobufKeys.unmanagedInclude in protoc in Test := "*.proto"

它不起作用,因为in protoc会覆盖in unmanagedSources

如何创建符合“重用现有密钥”规则的代码生成器插件?

0 个答案:

没有答案