XSD ファイルに double のデフォルト値が含まれている場合、jaxb2-maven-plugin が無効なソース コードを生成するという問題があります。
jaxb2-maven-plugin (org.codehaus.mojo) バージョン 1.5を使用します。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.5</version>
<configuration>
</configuration>
<executions>
<execution>
<id>analysis_jaxb</id>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<clearOutputDir>false</clearOutputDir>
<schemaFiles>Analysis.xsd</schemaFiles>
<packageName>xx.xx.xx.analysis</packageName>
<generateDirectory>${project.build.directory}/generated-sources/jaxb/analysis</generateDirectory>
<verbose>true</verbose>
</configuration>
</execution>
</executions>
</plugin>
次の XSD ファイルから Java ソースを生成します。
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="MinMax" type="MinMaxType"/>
<xs:complexType name="MinMaxType">
<xs:attribute name="min" type="xs:double" default="-INF" />
<xs:attribute name="max" type="xs:double" default="INF" />
</xs:complexType>
</xs:schema>
結果の Java ファイルには、次のメソッドが含まれます。
public double getMin() {
if (min == null) {
return -InfinityD; //UNDEFINED
} else {
return min;
}
}
フィールド-InfinityD
はどこにも定義されていません。
ブール値 (例: <xs:attribute name="minInclusive" type="xs:boolean" default="false" />
) を使用する場合、デフォルト値は期待どおりに機能します。
これとは対照的に、プラグインorg.jvnet.jaxb2.maven2 (maven-jaxb2-plugin)Double.POSITIVE_INFINITY
は、問題のある行に書き込みます。
これは単にサポートされていないのでしょうか? パラメータがありませんか?