[英]Suppress compiler warnings on JAXB generated classes
這可能是這個問題的重復( 避免編譯器對xjc生成的代碼的警告 ),但由於我不太熟悉XJC / JAXB自定義綁定的特性,我可能會認為我可能誤解了上述問題。
我的問題似乎很簡單 - 如何將@SuppressWarnings("all")
注釋添加到生成的JAXB類中? 我們的項目有0個警告政策,在JAXB生成步驟之后,我們最終會發出350多個警告,這些警告只是可怕的噪音。
我希望XJC上有一個簡單的標志,或者至少提供這樣的信息的簡單方法,但我找不到任何。
從我在旅行中看到的情況來看,人們會做以下事情之一:
以前,我們通過在單獨的Eclipse項目中推送與XML相關的代碼然后禁用項目上的警告/錯誤來解決這個問題。 現在,作為代碼整合/重構的一部分,我們已經重新調整了一些東西,不再擁有這種奢侈品。
對於這樣一個看似微不足道的問題,真的沒有優雅的解決方案嗎? 任何反饋/想法都非常感謝。
FWIW,我們的項目使用Ant作為構建系統。
你必須使用這個插件: jaxb2-annotate-plugin
2解決方案:
1 - 修改你的xsd並添加這種塊
<xsd:element name="foobar" type="xsd:string">
<xsd:annotation>
<xsd:appinfo>
<annox:annotate>@java.lang.SuppressWarnings("all")</annox:annotate>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
2 - 創建自定義綁定
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:annox="http://annox.dev.java.net"
xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
jaxb:extensionBindingPrefixes="xjc annox"
version="2.1">
<jaxb:bindings schemaLocation="schema.xsd" node="/xs:schema">
<annox:annotate target="class">@java.lang.SuppressWarnings("all")</annox:annotate>
</jaxb:bindings>
</jaxb:bindings>
免責聲明 :我是@ToYonos答案中提到的jaxb2-annotate-plugin的作者。
這不是一個獨立的答案,而是@ToYonos答案的補充。
我想從這個問題中解決以下幾點。
- 來自Atlassian的JAXB2 Basics框架/項目的Annox插件(根據示例,似乎可以完成這項工作,但是添加一個完整的框架和數百KB的代碼只是為了向一堆類添加簡單的注釋?真的嗎?),
我只需要添加一些注釋:
jaxb2-annotate-plugin
被移動到一個獨立項目 ,它不再是JAXB2 Basics的一部分。 它太大了,應該是一個獨立的東西。 jaxb2-annotate-plugin
不需要或為代碼添加任何運行時依賴項 。 如果注釋具有運行時保留,則在運行時需要注釋的類,但這應該是顯而易見的。 jaxb2-annotate-plugin
確實有許多編譯時依賴,比如javaparser ,它用於解析Java語法中的注釋。 嗯,這是因為插件必須執行許多適度高級的操作,例如從Java語法解析注釋並將它們轉換為代碼模型以添加到生成的代碼中。 我個人認為編譯時沒有幾百個問題就完全沒問題了。 所以,從我的觀點來看,@ ToYonos提供了一個合理的解決方法 。
現在,正確的修復如何?
1.6
,就不能應用鑽石修復。 正確的修復看起來不是一件容易的事,我選擇了一種解決方法,等待供應商修復。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.