wadl-client-plugin не работает на Java 10

Начнем с конфигурации wadl-client-plugin, которая правильно работает на Java 8 (при условии, что я добавил файл jaxp.properties в JDK, как задокументировано здесь):

<plugin>
  <groupId>org.jvnet.ws.wadl</groupId>
  <artifactId>wadl-client-plugin</artifactId>
  <version>1.1.6</version>
  <executions>
    <execution>
      <goals>
        <goal>generate</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <targets>
      <target>http://127.0.0.1:8080/sigb/rest/application.wadl</target>
    </targets>
    <packageName>sigb.ws</packageName>
    <autopackaging>true</autopackaging>
    <customizations>
      <customization>${basedir}/src/main/resources/bindings.xjb</customization>
    </customizations>
    <customClassNames>
      <property>
        <name>http://127.0.0.1:8080/sigb/rest/</name>
        <value>SigbWsClient</value>
      </property>
    </customClassNames>
    <generationStyle>jaxrs20</generationStyle>
  </configuration>
</plugin>

Как можно догадаться из вышеизложенного, мой WADL генерируется Джерси, который является вспомогательной структурой, которую я использовал для разработки своего REST-приложения.

При переходе на Java 9 или 10, конечно, мне нужно добавить зависимости для JAXB, который по умолчанию больше недоступен. Я добавил следующее к приведенной выше конфигурации:

<dependencies>
  <dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
  </dependency>
  <dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.0.1</version>
  </dependency>
</dependencies>

Теперь JAXB терпит неудачу из-за пространства имен, которое Джерси (по праву) включает в генерируемый им WADL. Ошибка описана следующим образом (я перевела сообщения с французского, поэтому они могут не совсем совпадать с оригинальной английской версией):

[ERROR] Failed to execute goal org.jvnet.ws.wadl:wadl-client-plugin:1.1.6:generate (default) on project sigbws-bul-ws-client: Failed to generate sources from http://127.0.0.1:8080/sigb/rest/application.wadl. Internal error: unexpected element (URI : "http://wadl.dev.java.net/2009/02", local : "application"). Expected elements are <{}application>,<{}doc>,<{}grammars>,<{}include>,<{}link>,<{}method>,<{}option>,<{}param>,<{}representation>,<{}request>,<{}resource>,<{}resource_type>,<{}resources>,<{}response> -> [Help 1]

Если кто-нибудь знает об этой ошибке, любая помощь будет принята с благодарностью.

Заранее спасибо...


person Jeff Morin    schedule 19.07.2018    source источник
comment
Вы придумали, как решить проблему?   -  person Vitalii    schedule 11.06.2021
comment
Пока нет, но с тех пор я отказался от этого пути. Я планирую попробовать Java 16 или 17 в ближайшем будущем. Если я найду что-то новое, я опубликую это на этой странице.   -  person Jeff Morin    schedule 21.06.2021


Ответы (1)


У меня была эта проблема на конвейере GitLab, хотя локально все было в порядке. В пайплайне использовался образ докера, созданный нашими операционистами. Код загружается из gitlab внутри этого образа и собирается там.

Я попытался загрузить код в образ docker alpine с установленными вручную jdk11 и maven. Сборка сработала в этом случае.

Затем парни из ops, которые создали этот образ, проверили его и сказали мне, что некоторые зависимости maven не разрешены из-за корпоративных политик, и когда они разрешили все, все стало нормально. К сожалению, мне не сказали точное имя зависимости, но надеюсь, что это направление будет полезным.

person Vitalii    schedule 21.06.2021