我正在为 Sbt 创建一个protobuf插件。
我创建了一个新的TaskKey
命名protoc
来将.proto
文件转换为.java
文件。
val protoc = TaskKey[Seq[File]]("protoc", "Convert proto to java.")
我还将我的protoc
任务注入到sbt.Keys.sourceGenerators
:
sourceGenerators <+= protoc
正如插件最佳实践所说,我重用了 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
!
如何创建符合“重用现有密钥”规则的代码生成器插件?