我想在生成的“Doc”类之前生成“@ java.lang.SuppressWarnings(”all“)”。
问题:jaxb2-annotate-plugin不会生成注释。
我的pom.xml:
...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>xjc</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<extension>true</extension>
<arguments>-Xannotate</arguments>
<args>
<arg>-Xannotate</arg>
</args>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-annotate-plugin-test-annox-annotations</artifactId>
</plugin>
</plugins>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>0.6.4</version>
</dependency>
<dependency>
<groupId>com.sun.codemodel</groupId>
<artifactId>codemodel</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>0.6.4</version>
</dependency>
<dependency>
<groupId>com.sun.codemodel</groupId>
<artifactId>codemodel</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${jaxb-api.version}</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>${jaxb.version}</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>${jaxb.version}</version>
</dependency>
</dependencies>
<properties>
<jaxb.version>2.2.5-2</jaxb.version>
<jaxb-api.version>2.1</jaxb-api.version>
</properties>
我的XSD:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="..."
targetNamespace="..." elementFormDefault="qualified"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:annox="http://annox.dev.java.net"
jaxb:version="2.1" jaxb:extensionBindingPrefixes="annox">
<xs:element name="Doc">
<xs:complexType>
<xs:annotation>
<xs:appinfo>
<annox:annotate>@java.lang.SuppressWarnings("all")</annox:annotate>
<annox:annotateClass>@java.lang.SuppressWarnings("all")
</annox:annotateClass>
<annox:annotate target="class">@java.lang.SuppressWarnings("all")
</annox:annotate>
</xs:appinfo>
</xs:annotation>
<xs:sequence>
<xs:element ref="info" />
</xs:sequence>
</xs:complexType>
</xs:element>
我在Doc类之前尝试了所有三种方法来生成“@ java.lang.SuppressWarnings(”all“)”
答案 0 :(得分:3)
我认为该插件未激活。您正在使用jaxb2-maven-plugin
并使用configuration/plugins/plugin
来配置jaxb2-annotate-plugin
。问题是,plugins/plugin
是我maven-jaxb2-plugin
的配置选项,而不是Codehaus jaxb2-maven-plugin
。
尝试切换到maven-jaxb2-plugin
或弄清楚如何在jaxb2-maven-plugin
中激活JAXB2插件。
也使用较新版本。您正在尝试使用Java语法,这是一个非常新的开发。请使用jaxb2-annotate-plugin
的实际版本(当前为1.0.1)。
以下是参考的测试项目之一:
您的自定义设置看起来不错,三者中的任何一个都可以正常工作。
免责声明:我是jaxb2-annotate-plugin
和maven-jaxb2-plugin
的作者。
答案 1 :(得分:0)
试试这个XSD ..
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="..." xmlns="..."
elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.0.1"
xmlns:annox="http://annox.dev.java.net" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
xmlns:jl="http://annox.dev.java.net/java.lang" jaxb:extensionBindingPrefixes="annox">
<xs:element name="Doc">
<xs:complexType>
<xs:annotation>
<xs:appinfo>
<annox:annotate>
<annox:annotate annox:class="java.lang.SuppressWarnings">all</annox:annotate>
</annox:annotate>
</xs:appinfo>
</xs:annotation>
<xs:sequence>
<xs:element ref="info" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
但我更喜欢像这样的外部绑定(例子)
<bindings version="2.0" xmlns="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:annox="http://annox.dev.java.net"
xmlns:namespace="http://jaxb2-commons.dev.java.net/namespace-prefix"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
jaxb:extensionBindingPrefixes="annox">
<bindings schemaLocation="../Binding.xsd">
<bindings node="//xs:complexType[@name='Bindings']">
<annox:annotate>
<annox:annotate annox:class="java.lang.SuppressWarnings" >all</annox:annotate>
</annox:annotate>
</bindings>
</bindings>
</bindings>
使用了maven插件(示例)
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.11.0</version>
<executions>
<execution>
<id>commun-generate</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<args>
<arg>-Xannotate</arg>
<arg>-nv</arg>
<arg>-Xnamespace-prefix</arg>
</args>
<bindingDirectory>${basedir}/src/main/resources/META-INF/schema/binding</bindingDirectory>
<bindingIncludes>
<bindingInclude>global-binding.xjb</bindingInclude>
<bindingInclude>Binding.xjb</bindingInclude>
</bindingIncludes>
<generateDirectory>${basedir}/src/main/java/</generateDirectory>
<schemas>
<schema>
<fileset>
<directory>${basedir}/src/main/resources/META-INF/schema</directory>
<includes>
<include>Binding.xsd</include>
</includes>
</fileset>
</schema>
</schemas>
<strict>false</strict>
<extension>true</extension>
<verbose>true</verbose>
<forceRegenerate>true</forceRegenerate>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.6.0</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>0.6.0</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-namespace-prefix</artifactId>
<version>1.1</version>
</plugin>
</plugins>
</configuration>
</execution>
</executions>
</plugin>