xmlbeans-maven-plugin 不为列表生成 getter
xmlbeans-maven-plugin not generating getters for Lists
我目前正在尝试构建一个已从 Ant 迁移到 Maven 的遗留项目。该项目使用 xmlbeans-maven-plugin
从 .xsd
源文件构建 java 类。在调用 get...List()
方法之前一切正常。所有的 List-getters 似乎都不见了。我能找到的所有信息都指向正在使用的不支持列表的 Java 版本。对大多数人有效的解决方案是将插件配置中的 javaSource
标记更改为 1.5
。这并没有解决我的问题。
我的 pom.xml
的相关部分目前看起来像这样:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xmlbeans-maven-plugin</artifactId>
<version>2.3.3</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>xmlbeans</goal>
</goals>
</execution>
</executions>
<configuration>
<javaSource>1.8</javaSource>
<schemaDirectory>src/main/xsd</schemaDirectory>
</configuration>
</plugin>
请注意,从 2011 年开始,另一个 Whosebug 线程 (Maven2:List return type methods not getting generated from .xsd files while using xmlbeans plugin) 建议将 Java 版本设置为 1.5。这给了我另一个错误:
Failed to execute goal org.codehaus.mojo:xmlbeans-maven-plugin:2.3.3:xmlbeans (default) on project ...: XmlBeans compile failed:
xml ErrorLoading schema file ...
xml ErrorLoading schema file ...
xml ErrorLoading schema file ...
xml ErrorLoading schema file ...
xml ErrorLoading schema file ...
我找到的这个问题的解决方案 here 告诉我这是 Java 11 的问题,我应该将 Java 版本设置为 1.8。
这是 .xsd
个文件之一的片段:
<xs:element name="DbcFile" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="path" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
这应该会生成一个名为 getDbcFileList()
的方法。但是,正如您从这个错误消息中看到的那样,它并没有这样做:
... cannot find symbol
symbol: method getDbcFileList()
它确实会生成 getDbcFileArray()
。我尝试了很多更改 Java 版本的组合,每次都删除构建文件夹以获得干净的构建,随便你怎么说。老实说,我没有想法。
我正在使用 Maven 3.6.3 和 OpenJDK 13.0.2+8_2。我是来自 IntelliJ 2020.1 的 运行 maven 命令。我唯一没有尝试过的是降级我的 JDK,但我觉得这不会有什么不同。
我解决了。出于某种原因,解决方案是降级到 JDK 1.8。
我目前正在尝试构建一个已从 Ant 迁移到 Maven 的遗留项目。该项目使用 xmlbeans-maven-plugin
从 .xsd
源文件构建 java 类。在调用 get...List()
方法之前一切正常。所有的 List-getters 似乎都不见了。我能找到的所有信息都指向正在使用的不支持列表的 Java 版本。对大多数人有效的解决方案是将插件配置中的 javaSource
标记更改为 1.5
。这并没有解决我的问题。
我的 pom.xml
的相关部分目前看起来像这样:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xmlbeans-maven-plugin</artifactId>
<version>2.3.3</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>xmlbeans</goal>
</goals>
</execution>
</executions>
<configuration>
<javaSource>1.8</javaSource>
<schemaDirectory>src/main/xsd</schemaDirectory>
</configuration>
</plugin>
请注意,从 2011 年开始,另一个 Whosebug 线程 (Maven2:List return type methods not getting generated from .xsd files while using xmlbeans plugin) 建议将 Java 版本设置为 1.5。这给了我另一个错误:
Failed to execute goal org.codehaus.mojo:xmlbeans-maven-plugin:2.3.3:xmlbeans (default) on project ...: XmlBeans compile failed:
xml ErrorLoading schema file ...
xml ErrorLoading schema file ...
xml ErrorLoading schema file ...
xml ErrorLoading schema file ...
xml ErrorLoading schema file ...
我找到的这个问题的解决方案 here 告诉我这是 Java 11 的问题,我应该将 Java 版本设置为 1.8。
这是 .xsd
个文件之一的片段:
<xs:element name="DbcFile" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="path" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
这应该会生成一个名为 getDbcFileList()
的方法。但是,正如您从这个错误消息中看到的那样,它并没有这样做:
... cannot find symbol
symbol: method getDbcFileList()
它确实会生成 getDbcFileArray()
。我尝试了很多更改 Java 版本的组合,每次都删除构建文件夹以获得干净的构建,随便你怎么说。老实说,我没有想法。
我正在使用 Maven 3.6.3 和 OpenJDK 13.0.2+8_2。我是来自 IntelliJ 2020.1 的 运行 maven 命令。我唯一没有尝试过的是降级我的 JDK,但我觉得这不会有什么不同。
我解决了。出于某种原因,解决方案是降级到 JDK 1.8。