我正在为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
!
如何创建符合“重用现有密钥”规则的代码生成器插件?