質問

独自の注釈プロセッサ (MyProcessorと呼びましょう)とプロセッサを使用するプロジェクト(MyProjectと呼びましょう) -processor javac に渡します。

出力を生成してMyProjectで使用できるようにするには、MyProcessorが必要です。

次のオプション(および問題)があります:

  • MyProcessorが、プロパティ user.dir で指定されたパスにファイルを書き込むようにします。
    問題: MyProcessorから見ると、 user.dir は常にMyProjectのパスではなく、私のホームディレクトリです。

  • javac -A オプションを使用して、MyProjectの現在のディレクトリをMyProcessorに渡します。
    問題:いハードコードパス: / some / path / to / MyProject /

  • MyProcessorがいくつかのソースファイルを生成し、MyProjectとともに javac によってコンパイルされるため、MyProjectはこのコンパイルされたクラスを参照して、そこからデータを取得できます。
    問題:このような簡単な(?)タスクには複雑すぎます。

  • 他にどのようなオプションがありますか?

誰かが提案することができますか、どうすればいいですか?

役に立ちましたか?

解決

Processor.init() メソッド(実装済み)は ProcessingEnvironment パラメータとして、を返す getFiler()メソッドがあります。 href = "http://java.sun.com/javase/6/docs/api/javax/annotation/processing/Filer.html" rel = "nofollow noreferrer">ファイラーインスタンス。

Filer createResource()メソッドを使用する必要があります(生成される出力がクラスでもソースでもないことを前提とします。そうでない場合は、適切な create メソッド))に出力し、クラスまたはソースの場所(以前はおそらく望ましいですが、あなたが何をしているかによって異なります)。どちらも必要に応じてコマンドラインスイッチでオーバーライドできますが、ビルドプロセスで使用されるため、明確に定義されています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top