2012-10-31 7 views
10

現在、私はProtobufsをシリアル化フォーマットとして使用して、いくつかの独立したMavenプロジェクトを管理しています。私はDavid Trottのmaven-protoc pluginを使ってコンパイル時にコードを生成しています。Mavenプロジェクト間でのプロトコルバッファ定義のインポート

私はそれらのプロジェクトがお互いにやりとりし合うようになるまで、あるいはむしろお互いのprotobufsを使いたい時まで、すべてがうまくてうまくいきます。 protobuf言語には私が望むことをする "import"指示がありますが、プロジェクトBが依存するプロジェクト "A"を ".proto"ファイル(あるいは場合によっては中間形式)にエクスポートするという課題に直面しています。

Mavenは、プロジェクトにリソースをバンドルする方法を提供しますが、AFAIKは実行時にコードで使用されるものであり、コンパイル/ソース生成フェーズでの目標ではありません。達成したいことを記述したドキュメントを探してください。

答えて

2

.protoファイルは、生成されたプロジェクトの別の.jar/.zipにパッケージ化し、専用のクラシファイアを使用してリポジトリに公開することができます。アセンブリプラグインを使用すると、リリース中に構築された「ソースジャー」に近いものを公開するのに役立ちます。

次に、それらを使用するプロジェクトで、以前に作成した成果物を依存関係として追加します。 "unpack-dependencies"ゴールで依存関係プラグインを使用し、 "compile"の前にフェーズにバインドします。

+0

それはどのように設定するのか答えを教えてもらえます –

5

私は達成するための別の方法を見つけました.Mavenの魔法は含まれていません。 maven-protocプラグインのコードを見てみると、これはサポートされている使用例であることが判明しました。プラグインは依存jarファイルを探して収集し、一時ファイルに展開します。そのディレクトリは、protoc呼び出しへのインポートパスとして設定されます。

発生する必要があるすべては、私はそれリソース行うことでやった依存関係のパッケージに含まれる.protoファイルのです:

プロジェクト//srcに/メイン/リソース/ a.proto

b.proto::/ B /のpom.xml、「」として、通常のMavenの依存関係を追加し、それがローカルに存在するかのようちょうどb.protoからa.protoをインポートするプロジェクトで今

「 インポート.proto ";

これは理想的ではありません。さまざまなプロジェクト間でファイル名が衝突する可能性がありますが、これはまれにしか発生しません。

+0

モジュール名 –

+0

に基づいて.protファイルをディレクトリに置くだけでいいですか?protoファイルを1つからインポートする必要がある場合はどうしたらいいですか?あなたの作業プロジェクトのprotoファイルへのjar? – Righto

関連する問題