xmlbeans-maven-plugin не генерирует геттеры для списков - PullRequest
0 голосов
/ 17 апреля 2020

В настоящее время я пытаюсь создать устаревший проект, который был перенесен из 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, но я чувствую, что это ничего не изменит.

1 Ответ

0 голосов
/ 21 апреля 2020

Я решил это. По какой-то причине было решено перейти на JDK 1.8.

...