問題タブ [annotation-processing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - AnnotationProcessorで注釈付きタイプの*サブタイプ*をテストするにはどうすればよいですか?
アノテーション付きの型(インターフェイスの場合もあります)とそのすべてのサブタイプをテストするアノテーションを作成し、テストされた型が引数なしのコンストラクターのない具象クラスである場合はコンパイルエラーをスローしたいと思います。実際に注釈が付けられているタイプをテストできますが、問題ありません。サブタイプのテストは私が迷っているところです。どうすればこれを達成できますか?以下のソースコード:
NoArgConstructorRequired.java
NoArgConststructorRequiredProcessor.java
java - プログラムで注釈プロセッサを呼び出す
注釈プロセッサを作成するのはこれが初めてであり、プログラムで呼び出したいと思います。出来ますか?
私はプロセッサ用の小さなコードを書きました:
ここで、プロセスメソッドを呼び出したい場合、どうすればこれを行うことができますか?次の方法でそれを行うことはできますか?
どんな情報も私にとって非常に役に立ちます。
ありがとう。
android - アノテーションプロセッサを使用してソースツリー全体を調べるにはどうすればよいですか?
特定のメッセージタイプを処理するハンドラークラスがたくさんあります。これらすべてのハンドラーを登録するには、どのハンドラーが存在するかを知る必要があります。現在、それらはすべて特定のアノテーションで注釈が付けられており、Java 6アノテーションプロセッサを使用してそれらすべてを取得し、注釈付きの各タイプのインスタンスを保持するRegisterクラスを作成します。
これは、ツリー全体を一度にビルドする場合にうまく機能しますが、注釈付きクラスの1つだけをビルドする場合(たとえば、ファイルをEclipseに保存する場合)、プロセッサーはそのタイプのみを認識し、不完全なレジスターをビルドします。このシナリオで他のタイプを調べるにはどうすればよいですか?
android - AndroidMock を使用した Ant android テスト プロジェクト
私は Android プロジェクトを持っています。コマンド ラインでテストをビルドしてインストールし、実行したいと考えています。
以下は私のビルドシェルスクリプトです:
プロジェクトをビルドしてインストールすることはできますが、テスト プロジェクトをビルドすると次のエラーが発生します。
私が何をすべきか知っている人はいますか?AndroidMock を使用したために起こりますか?
android - Maven を使用して、apk にコンパイルされたアノテーション処理 (生成) ソースを取得できない
Maven とandroidannotationsを使用して apk をビルドしようとしていますが、IDE とは無関係です (実際には Eclipse ではなく IntelliJ IDEA を使用していますが、完全に IDE に依存しないようにしたいと考えています。サーバーを構築します)。
注釈は適切に処理されているようですが、現在行き詰まっているapk にコンパイルされていません。
<includes>
のセクションを使用しようとしましたmaven-compiler-plugin
が、パスは正しいはずです。パスは存在し、Android のメイン アクティビティであるがアンダースコア (_) 接尾辞が付いた、処理、生成された注釈の Java クラスも含まれています。
Maven+Eclipse の使い方を説明した wiki ページがありますが、Eclipse IDE に縛られすぎています。https://github.com/excilys/androidannotations/wiki/Building-Project-Maven-Eclipse なので、問題の解決には役立ちません。
これは私の pom.xml です:
mvn install
-s
正しいパスのコンパイラ オプションも表示されます。
(完全なログmvn install
はこちら: http://pastebin.com/6dQkcNXD )
ただし、apk の実行は次のように失敗します。
処理された注釈HelloAndroidActivity_
は apk / classes.dex 内にありません。
eclipse - Eclipse プラグインの開発、プラグインのクラスを Java プロジェクトで公開
eclipse プラグインとして注釈プロセッサを構築しようとしています。Eclipse 用のプラグインを作成するのはこれが初めてなので、正しい用語を使用しているかどうかわかりません。完全に明確でない場合は申し訳ありません。
私の目標は、注釈付きの Java クラスからコードを生成するプラグインを用意することです。プラグインにすべての注釈を含めたいので、プラグインをインストールする以外に、ユーザーのプロジェクトに追加の依存関係を持たせる必要はありません。ユーザーはプラグインをインストールし、いくつかのクラスを作成し、いくつかの注釈 (プラグイン内にパックされています) でそれらに注釈を付け、生成されたコードを取得します。
私がやろうとしていることをすることは可能ですか? 独自のライブラリを追加する他のプラグイン (Xtent など) を見てきました。
10倍
ant - javac Ant タスクでインクリメンタル コンパイルを無効にする
注釈プロセッサを簡単にテストする必要があるためjavac
、必要なすべてのオプションを設定して起動する Ant スクリプトを準備しました。残念ながら、別のスレッドで述べられているように:
デフォルトでは、タスクは .java ファイルと対応する .class ファイルのタイムスタンプを比較し、対応するオブジェクト ファイルよりも新しいソース ファイル、またはオブジェクト ファイルをまったく持たないソース ファイルを再コンパイルするよう Java コンパイラに指示するだけです。
ほとんどの場合、それは私にとっては素晴らしいことですが、対応する .class ファイルが既に存在するかどうかに関係なく、javac を毎回起動する必要がある注釈プロセッサをテストする必要がある場合はそうではありません。
このアリのデフォルトの動作を無効にする方法はありますか? javac
タスクのすべてのオプションを調べましたが、何も見つかりませんでした。出力ディレクトリをクリーニングする以外に解決策はありますか?
java - 注釈プロセッサでフィールドのタイプを取得するにはどうすればよいですか?
オブジェクトが実行時に不変であるかどうかを確認するための注釈を書き込もうとしています。そのために、オブジェクトのクラスがfinalであるかどうかを確認し、次にそのすべての属性もfinalであるかどうかを確認します。次に、プリミティブ型でない場合は、各フィールドの型について同じことを再帰的にチェックしたいと思います。
ここにコードがあります:
自分のフィールドのタイプでメソッドを最初からやり直すにはどうすればよいですか?ここにあるフィールドのタイプを取得するにはどうすればよいjavax.lang.model.element.Element
ですか?
編集:包含クラスで宣言されている型が必要です。これは、あらゆる種類の可変性を回避するために最終クラスである必要があります。
java - 注釈処理のリソース
Java6アノテーション処理に関する貴重なリソースを必死に探しています。理想的には、私が対処したいさまざまなポイントは次のとおりです。
- さまざまなElementインターフェースと、それらをクラス構造から取得する方法
- プロセッサを注釈にリンクする方法
- プロセッサを使用して、たとえばjarファイルの形式で注釈を作成する方法
- Eclipseでこれをすべて作成する方法
法案に一致する可能性のあるリソースはありますか?
java - Maven 2 でカスタム注釈プロセッサを使用するには?
私たちのエンタープライズ アプリケーションでは、Java クラスからデータを動的に収集する方法を探しています。プロパティを持つカスタム アノテーション インターフェイス ( @interface
)を作成しましたname
。すべての注釈付きクラスからこのプロパティの値を収集したいと考えています。
カスタム アノテーションのAnnotationProcessorFactory
とを作成できました。AnnotationProcessor
Maven 2 を使用しているためpom.xml
、メイン プロジェクトのプラグインに以下を追加しました。
これは、いくつかのサブプロジェクトを持つメイン プロジェクトにあります。ファクトリとカスタム プロセッサは、これらのサブプロジェクトの 1 つにあります。カスタム注釈はすべてのサブプロジェクトに散在しているため、プラグインをpom.xml
メイン プロジェクトに配置しました。
問題は、mvn apt:process
コマンドを発行すると、プロセッサのない注釈に関する警告が表示され、カスタム注釈がその中に含まれていることです。これは、プラグインがファクトリ クラスを見つけられないことを意味すると思います。
プラグインがファクトリ ファイルとプロセッサ ファイルを検出できるようにするにはどうすればよいですか?
編集:
プロジェクト階層は非常に単純です。
プラグインは の にpom.xml
ありmain_project
ます。ファクトリとプロセッサがsub_project1
あり、カスタム アノテーションがsub_project2
, sub_project3
, ..., にあると仮定してください。sub_projectn