我目前正在尝试构建一个已从 Ant 迁移到 Maven 的遗留项目。这个项目使用xmlbeans-maven-plugin
从.xsd
源文件构建 java 类。get...List()
在调用方法之前一切正常。所有列表获取者似乎都不见了。我能找到的所有信息都指向正在使用的不支持列表的 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 年开始,另一个 stackoverflow 线程(使用 xmlbeans 插件时未从 .xsd 文件生成的 Maven2:List 返回类型方法)建议将 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 ...
我在这里找到的这个问题的解决方案告诉我这是 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,但我觉得这不会有什么不同。