使用JXC模式生成ant任务,我似乎无法忽略枚举。我有几个枚举,在内部用于表示与生成的XML无关的类型或次要配置值。
我可以使用enum将字段排除为@XmlTransient,以将其从对象的模式中排除,但仍然会为枚举生成simpleType描述符!
示例:
public class CustomerType {
@XmlTransient
public enum IsolationLevel { ALL, SAME_TYPE, SELECTED }
@XmlTransient
private Long id;
@XmlValue
private String name;
@XmlTransient
private IsolationLevel isolation = IsolationLevel.ALL;
}
生成的架构:
<xs:simpleType name="isolationLevel">
<xs:restriction base="xs:string">
<xs:enumeration value="ALL"/>
<xs:enumeration value="SAME_TYPE"/>
<xs:enumeration value="SELECTED"/>
</xs:restriction>
</xs:simpleType>
任何人对如何让JXC忽略枚举有任何想法?它没有被任何XML映射的属性或字段使用,并且枚举本身被标记为@XmlTransient - 为什么它仍然是我的模式的一部分?
答案 0 :(得分:0)
我也遇到了这个问题并将我的pom更新为2.2.11,至少对于那个版本是固定的。评论中提到的Jira bug也说明它已在2.2.5中修复。在这样做时,我必须添加三个依赖项,如下所示:
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.2.12</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.2.11</version>
</dependency>