cxf-codegen-plugin постоянно выдает сообщение об ошибке «Не удалось сгенерировать типы» - PullRequest
2 голосов
/ 17 июня 2011

Надеюсь получить некоторую обратную связь по этому вопросу, которая беспокоит некоторое время.

Я использую maven для создания простого клиентского приложения веб-служб.

Он использует несколько wsdls (около 8), которые имеют импорт xsd (примерно 2 на wsdl для каждого запроса и ответа, плюс большое количество дополнительных импортов) для генерации java-кода с использованием плагина maven cxf wsdl2java.

Я начал с плагина версии 2.1.7, попробовал несколько 2.2.x и теперь пытаюсь с версией 2.3.4 плагина.

Вот раздел плагинов моего pom-файла:

        <plugin>
              <groupId>org.apache.cxf</groupId>
              <artifactId>cxf-codegen-plugin</artifactId>
              <version>2.3.4</version>
              <executions>
                 <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <defaultOptions>
                            <noAddressBinding>true</noAddressBinding>
                        </defaultOptions>
                        <wsdlRoot>${basedir}/src/main/resources/wsdl</wsdlRoot>
                        <includes>
                              <include>*.wsdl</include>
                         </includes>
                    </configuration>
                    <goals>
                       <goal>wsdl2java</goal>
                    </goals>
                 </execution>
              </executions> 
          </plugin>
      </plugins>

Я могу предоставить предыдущую версию того, как это работало для меня в прошлом.По сути, каждый отдельный wsdl был указан как элемент .

Единственное, что я сделал с «средой», было то, что для отдельного проекта я удалил все в своей папке m2.С тех пор генерация кода выдает мне следующее сообщение об ошибке (используя «mvn -e generate-sources» из команды):

    [INFO] ------------------------------------------------------------------------
    [ERROR] BUILD ERROR
    [INFO] ------------------------------------------------------------------------
    [INFO] Failed to generate types.

    [INFO] ------------------------------------------------------------------------
    [INFO] Trace
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to generate types.
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:584)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:500)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:479)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:331)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:292)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:142)
            at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:336)
            at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:129)
            at org.apache.maven.cli.MavenCli.main(MavenCli.java:301)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
            at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
            at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
            at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
    Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to generate types.
            at org.apache.cxf.maven_plugin.WSDL2JavaMojo.callWsdl2Java(WSDL2JavaMojo.java:413)
            at org.apache.cxf.maven_plugin.WSDL2JavaMojo.execute(WSDL2JavaMojo.java:362)
            at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:453)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:559)
            ... 16 more
    Caused by: org.apache.cxf.tools.common.ToolException: Failed to generate types.
            at org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.generate(JAXBDataBinding.java:745)
            at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.generateTypes(WSDLToJavaContainer.java:599)
            at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:247)
            at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:138)
            at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:290)
            at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:103)
            at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113)
            at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86)
            at org.apache.cxf.maven_plugin.WSDL2JavaMojo.callWsdl2Java(WSDL2JavaMojo.java:410)
            ... 19 more

Одна вещь, которую я заметил, это то, что в target / генерируется-sources папка, в которой создаются те же классы в папке \ Generated-Source \ CXF \ Generated AND \ Generated-Source \ org \ opentravel \ ota_2003_05.Не совсем уверен, есть ли ошибка в XSD или в самом wsdl.

Я искал хорошее объяснение ошибки и пока не нашел решения.Я сделал свою справедливую долю "поиска в Google" для этой конкретной проблемы.Начинаю приходить в отчаяние и надеюсь, что скоро найду решение.

Заранее благодарим за любую помощь, которую вы можете оказать.

Ответы [ 2 ]

1 голос
/ 25 июня 2015

Я вижу это время от времени, когда я использую плагин cxf java, я думаю, что cxf.maven.wsdl2javaMojo не хватает памяти.

в этом случае

  • Я бы порекомендовал разбить каждое поколение wsdl на подмодули,
  • увеличить память maven
  • если он по-прежнему останавливается в середине, попробуйте использовать команду mvn Goals -rf: WhereStops, поэтому он начинается с субмодуля, на котором заканчивается память, поэтому вам не нужно начинать все сначала.

Заметьте, я использую Maven 3.2, если вы не уверены, как работает -rf, google mvn -rf

0 голосов
/ 17 июня 2011

Не совсем уверен.Я только что посмотрел код на этот номер строки и, к сожалению, обнаружил, что в этот момент он полностью поглощает IOException.Таким образом, я понятия не имею, как получить реальную «причину» этого исключения IOException.Я собираюсь исправить это и передать его в багажник.Если вы можете повторить попытку с последними моментальными снимками завтра или в понедельник (после ночных сборок развертывания), скорее всего, вы получите гораздо лучшее / полное сообщение об ошибке.

...