現在、Intellij 15.0.6のGradle 3.3プロジェクトで作業しています。注釈プロセッサを使用してクラスパスにXMLリソースを生成
Gradle APT pluginを使用して、クラスパスにアノテーションプロセッサを追加しています。
Javaクラスファイルを生成するときはうまく動作しますが、ビルドディレクトリの生成ディレクトリに相当するresources
ディレクトリ内にXMLソースを生成できる必要があります。ここで
は、現在、私のビルドディレクトリ構造です:
あなたが見ることができるように、それは私がこの問題を引き起こす可能性のあるものです疑うresources
ディレクトリを、含まれていません。
私は./gradlew assemble
を経由して私の注釈プロセッサを実行しているから受け取る現在の例外は次のとおりです。
FileObject source = processingEnv.getFiler() .createResource(StandardLocation.CLASS_PATH, "", "ap-test-2.html");
注:私は、xmlファイルを生成するために、私の注釈プロセッサの中に使用していますjava.lang.IllegalArgumentException: Resource creation not supported in location CLASS_PATH
コード:私はテストのようにHTML拡張を使用しましたが、XMLは同じ結果を生成するはずです。
javax.tools.StandardLocation
だけでなく、他の出力場所があります。
SOURCE_OUTPUT
場所はsrc/apt/main
以内に、生成されたJavaクラスと同じパッケージ内にXMLを配置するために働きました。しかしこれは私が望む行動ではありません。クラスパス内に住む必要があります。
私は広範な研究の後、他の場所で議論されたこの例外は見つかりませんでした。
何か助けていただければ幸いです。この質問を読んでいただきありがとうございます。
お返事ありがとうございます。面白いことに、Intellijは 'build'クラスパスファイルを' classes'と 'resources'の2つのディレクトリに分けています。私のプロセッサは、場所を 'CLASS_OUTPUT'に変更した後、HTMLを' classes'ディレクトリに追加しました。これをさらにテストし、私が見つけたものをあなたに知らせます。 –
Intellijはこれらの2つのディレクトリをマージしてクラスパスに追加すると思われますので、場所を 'CLASS_OUTPUT'に設定するのは理論的には有効です。私は、これが本当であることを確認するために私のプロセッサで動作するMVPを取得しようとします。 –