Sbt 用のprotobufプラグインを作成しています。
ファイルをファイルに変換する新しいTaskKey
名前を作成しました。protoc
.proto
.java
val protoc = TaskKey[Seq[File]]("protoc", "Convert proto to java.")
protoc
また、タスクをsbt.Keys.sourceGenerators
次の場所に注入しました。
sourceGenerators <+= protoc
プラグインのベスト プラクティスで述べたようにsbt.Keys.sources
、ソース.proto
ファイルを示すために既存の SBT を再利用しました。これらと同等のコードをいくつか書きました:
// 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
!
「既存のキーを再利用する」ルールに準拠するコード ジェネレーター プラグインを作成するにはどうすればよいですか?