3

我正在为 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

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

4

0 回答 0