В настоящее время я пытаюсь создать устаревший проект, который был перенесен из Ant в Maven. Этот проект использует xmlbeans-maven-plugin
для создания java классов из .xsd
исходных файлов. Все работает нормально, пока не будет вызван метод 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>
Другой поток stackoverflow ( Maven2: методы списка возвращаемого типа не получаются сгенерированный из файлов .xsd при использовании плагина xmlbeans ), с 2011 года, предлагает вместо этого установить 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. Я бегу maven команды от IntelliJ 2020.1. Единственное, что я не пробовал, - это понижение рейтинга JDK, но я чувствую, что это ничего не изменит.