問題タブ [jaxb2-annotate-plugin]

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.

0 投票する
2 に答える
1988 参照

java - JAXB で生成されたクラスに対するコンパイラの警告を抑制します。

これはおそらくこの質問 ( xjc によって生成されたコードでコンパイラの警告を回避する ) の複製ですが、私は XJC/JAXB カスタムバインディングの特異性にあまり精通していないため、言及された質問を誤解した可能性があると推測します。

@SuppressWarnings("all")私の質問は単純に思えます -生成された JAXB クラスに注釈を追加するにはどうすればよいですか? 私たちのプロジェクトには警告ポリシーがありません。JAXB 生成ステップの後、ひどいノイズである 350 以上の警告が表示されます。

XJC の単純なフラグか、少なくともそのような情報を提供する簡単な方法のいずれかを期待しますが、何も見つかりません。

私が旅行中に見たことから、人々は次のいずれかを行っています。

  1. 例によると、 @lexicoreのJAXB2 Annotate Pluginは仕事をしているように見えますが、一連のクラスに単純な注釈を追加するためだけに、フレームワーク全体と数百kBのコードを追加しますか? 本当??、
  2. カスタム JAXB バインディング (私は間違っているかもしれませんが、これは非常に難解なようで、この方法で実行できるかどうかは完全にはわかりません)、
  3. JAXB 生成後の検索と置換を行うカスタム ANT ターゲット
  4. Eclipse 4+ には、選択したプロジェクトの警告をフィルターで除外するオプションがあるようですが、さまざまな歴史的/レガシーの理由により、Eclipse 3.7.2 (Indigo) で立ち往生しています。
  5. 注釈の挿入を行うカスタム XJC プラグイン (コメンターの 1 人が提案したように、ここを参照)、
  6. 生成されたすべてのクラスを JAR に配置し、JAR をプロジェクトの依存関係にしてから、生成されたコードを完全に削除します。

以前は、XML 関連のコードを別の Eclipse プロジェクトに押し込んでから、プロジェクトの警告/エラーを無効にすることで、これに対処していました。現在、コードの統合/リファクタリングの一環として、物事を再編成し、その余裕はなくなりました。

このような一見些細な問題に対するエレガントな解決策は本当にないのでしょうか? フィードバック/考えは大歓迎です。

FWIW、私たちのプロジェクトは Ant をビルドシステムとして使用しています。

0 投票する
1 に答える
7596 参照

jaxb - JAXB スキーマから Java への異なる XmlRootElement 名とクラス名

私はいくつかのJavaクラスを生成しているxsdスキーマを持っています。生成にはjaxbを使用しています。

で注釈が付けられたクラスを生成できるようにし@XmlRootElementたいのですが、 @XmlRootElement name プロパティを、生成されたクラスの名前とは異なるものにしたいと考えています。

私の xsd では、次のように定義しています。

このコードは、次の Java クラスを生成します。

の name プロパティは@XmlRootElement、生成されたクラスの名前と同じです。生成されるクラス名をCustomerRequest にしたい。

jaxb:classクラス名を変更するために定義を使用しようとしました。実際、このオプションはクラス名を変更しますが、@XmlRootElement注釈を削除します。存在する必要があります。

次の xsd:

このクラスを生成します:

@XmlRootElement注釈を失うことなく、生成されたクラス名とは異なる注釈のプロパティ名を作成するにはどうすればよいですか?

解決策の更新: ユーザー Xstian は、外部バインディングを使用して正しい解決策を提案しました。さらに参考までに、インライン バインディングを使用するために変換されたソリューションで、自分の投稿を更新します。

0 投票する
1 に答える
2515 参照

json - annox プラグインを使用して @JsonSerialize に include=JsonSerialize.Inclusion.NON_NULL を追加する方法

maven プラグイン maven-jaxb2-plugin を使用して、xsd から JAXB オブジェクトを生成しています。以下は私たちが持っている依存関係です

jaxb2-basics - 0.6.2
jaxb2-basics-annotate - 0.6.2

Maven ファイルには、-Xannotate と -XtoString も含めました。

バインディング ファイルは次のとおりです。

これにより、@JsonSerialize(using=JsonDateSerializer.class) が追加されました。しかし、include=JsonSerialize.Inclusion.NON_NULL を追加するために以下のようないくつかのオプションを試しましたが、うまくいきませんでした

ただし、いずれの場合も ValueParseException が発生します。では、JsonSerialize の include()、typing() などのパラメーターをアノテーションに追加する正しい方法は何ですか。

また、 JAXB/XJC によって XSD から生成された POJO に Jackson アノテーションを追加する方法に基づいていますか? 私も試しました

これも、注釈に include 部分を追加しませんでした。

0 投票する
1 に答える
1718 参照

java - jaxb2-annotate-plugin と XJC ツールによるカスタム アノテーション

実行時に一連の XSD ファイルを Java ソース POJO に変換しようとしています。これらの XML スキーマは、いくつかのプロトコル固有のモデル定義に基づいて生成されます。

JAXB の XJC を使用して、スキーマを pojo にコンパイルしました。カスタム注釈を行うためにJaxb2-annotate-pluginを使用したときに問題に直面し始めました。

テストのために、スキーマに以下を追加しました。

XJC はその後、次のエラーを出し始めました。

サポートされていないバインディング名前空間 " http://annox.dev.java.net ". おそらく、「 http://java.sun.com/xml/ns/jaxb/xjc 」という意味ですか?

さまざまなソースで提供されている提案に従って、次のように XJC のクラスパスに必要な JARS を追加しましたが、何もうまくいかないようです。

xjc -p com.test -classpath="jaxb2-basics-annotate-1.0.2.jar;tools-0.4.1.5.jar;comm‌s-logging-1.1.1.jar;jaxb2-basics-runtime- 0.9.5;annox-1.0.1.ja‌r;javaparser-1.0.11.jar;jaxb2-basics-tools-0.9.5.jar" -extension myschema.xsd

jaxb2-annotate-plugin で XJC を使用して Java ソースを生成するための適切な例が見つかりませんでした。実行時に xsd と pojo を生成する必要があると述べたように、これを maven/ant に追加することはできません。

XJC ツールを Java プロセスとして使用することが唯一の方法である場合は、お知らせください。

  • クラスパスに含まれる依存 jar は何ですか?
  • プラグインと -Xannotate スイッチを有効にする方法は?

このプラグインを使用して pojo の生成を他の方法で実行できる場合は、同じことを提案してください。

私はjaxbの初心者です。どんな提案も本当に役に立ちます。前もって感謝します!

0 投票する
0 に答える
700 参照

eclipse - jaxb2-annotate-plugin の使い方

JAXB (Maven を使用) を使用して XSD から Java クラスを生成する方法を学習したばかりなので、生成したクラスにいくつかの注釈を追加する必要があります。まさにこれを行うことがわかりましたjaxb2-annotate-pluginが、プロジェクトでそれを使用する方法がわかりません。ステップバイステップのチュートリアルや役立つ説明を提供できる人はいますか? どんな助けでも大歓迎です。