修改java类以在编译时包含特定注释
我有许多由JAXB的xsd2java生成的类。我需要在编译时用特定的注释对所有这些类进行注释(例如使用lombok注释)。有什么方法可以做到这一点,例如使用一些代码生成工具吗?免责声明:我是该工具的作者,它允许您向模式派生类添加任意注释 简短示例:修改java类以在编译时包含特定注释,java,jaxb,xjc,lombok,jaxb2-annotate-plugin,jaxb2-maven-plugin,maven-jaxb2-plugin,Java,Jaxb,Xjc,Lombok,Jaxb2 Annotate Plugin,Jaxb2 Maven Plugin,Maven Jaxb2 Plugin,我有许多由JAXB的xsd2java生成的类。我需要在编译时用特定的注释对所有这些类进行注释(例如使用lombok注释)。有什么方法可以做到这一点,例如使用一些代码生成工具吗?免责声明:我是该工具的作者,它允许您向模式派生类添加任意注释 简短示例: <xsd:complexType name="FooType"> <xsd:annotation> <xsd:appinfo> <annox:annotate&
<xsd:complexType name="FooType">
<xsd:annotation>
<xsd:appinfo>
<annox:annotate>@java.lang.SuppressWarnings({"unchecked","rawtypes"})</annox:annotate>
<annox:annotate target="package">@javax.annotation.Generated({"XJC","JAXB2 Annotate Plugin"})</annox:annotate>
</xsd:appinfo>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="bar" type="xsd:string"/>
<xsd:element name="foobar" type="xsd:string">
<xsd:annotation>
<xsd:appinfo>
<annox:annotate>@java.lang.SuppressWarnings({"unchecked","rawtypes"})</annox:annotate>
<annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
<annox:annotate target="setter-parameter">@java.lang.Deprecated</annox:annotate>
<annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
<annox:annotate target="field">@java.lang.Deprecated</annox:annotate>
<annox:annotate target="class">@java.lang.Deprecated</annox:annotate>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
本部分:
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-annotate-plugin-test-annox-annotations</artifactId>
</plugin>
org.jvnet.jaxb2_commons
对于/combo.确实,我是指XJC,对此表示抱歉。我以前见过这个插件,但我认为它只能用于JDK注释。我正在使用jaxb2 maven插件生成类,您能解释一下在这种情况下“包含到XJC类路径”是什么意思吗?而且,我很难理解这是如何工作的。如何注释包的所有类?target=“package”是否会这样?提前谢谢你!另外,我似乎需要maven-jaxb2-plugin而不是jaxb2-maven-plugin,对吗?@alex我碰巧也是这本书的作者。因此,我的建议是使用maven-jaxb2-plugin
,这是非常有偏见的。@alex您也可以使用jaxb2-annotate-plugin
。我只是从来没有试过。通过使用pom.xml
中的dependency/dependency
,可以在类路径中包含其他JAR。然后需要将参数添加到配置中。请参阅此答案(和问题)的示例:这是关于其他插件的,但您将了解如何使用Codehausjaxb2-maven-plugin
配置它。我决定使用在您提到的示例中找到的fluent-api插件。这就是我想要的,一种类似于生成器的创建实例的方法
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-annotate-plugin-test-annox-annotations</artifactId>
</plugin>