WSDL2Code (Maven) автоматически генерирует поврежденные классы (пакеты) - PullRequest
5 голосов
/ 02 декабря 2008

В настоящее время я занимаюсь заменой платформы IBM WebService на Axis2. При создании кода из файла WSDL я использую плагин Maven WSDL2Code. Однако созданный код всегда неверен. Или, скорее, названия пакетов всегда неверны, что, в свою очередь, делает каждый метод, называемый не вызываемым (создает еще больше ошибок, до 10.000 + ошибок в затмении).

Вот пример того, что на самом деле происходит (это просто пример, который я специально сделал, чтобы получить совет):

      <plugin>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-wsdl2code-maven-plugin</artifactId>
            <version>1.4.1</version>
            <executions>
                <execution>
                    <id>Test</id>
                    <goals>
                        <goal>wsdl2code</goal>
                    </goals>
                    <configuration>
                        <packageName>test.testpackage</packageName>
                        <databindingName>xmlbeans</databindingName>
                        <wsdlFile>${basedir}/wsdl/service.wsdl</wsdlFile>
                        <outputDirectory>${basedir}/testdirectory</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>

Теоретически, это должно генерировать код с именем пакета "test.testpackage" в каталоге testdirectory / test / testpackage. Однако вместо этого он создает следующий пакет: Src.test.testpackage в каталоге testdirectory.src.test.testpackage. Он всегда добавляет «src» как к имени пакета, так и к каталогу - если я изменю имя пакета на src.test.testpackage, он сгенерирует следующий пакет: src.src.test.testpackage.

Это, конечно, приводит к огромной проблеме, потому что каждый сгенерированный файл имеет следующую ошибку: «Заявленный пакет« src.test.testpackage »не соответствует ожидаемому пакету "Src.src.test.testpackage"

Я в полной растерянности. Я просто не могу найти никакой причины, почему это должно добавить "src" везде. Я заметил автоматически сгенерированный файл build.xml, содержащий значение с именем sourcedirectory = x / src (или что-то подобное), но я ничего не могу сделать, чтобы повлиять на это значение (попытка изменить его, а затем сохранить файл не имеет значения очевидно, поскольку он будет сгенерирован снова при следующем запуске maven).

О, и я обычно использую команду "mvn clean install" и версию 1.4.1 WSDL2Code, поэтому это не одна из старых ошибок wsdl2code: wsdl2code.

Если кто-нибудь и поймет, что здесь на самом деле не так, я был бы очень признателен.

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

Ответы [ 5 ]

9 голосов
/ 18 февраля 2009

В версии 1.4.1 есть еще несколько параметров конфигурации, которые на самом деле не задокументированы (посмотрите на источник org.apache.axis2.maven2.wsdl2code.WSDL2CodeMojo) ...

Просто используйте true - это должно решить вашу проблему: -)

2 голосов
/ 06 мая 2009

Этот вопрос довольно старый, поэтому я не знаю, есть ли у вас проблемы ...

Я бы рекомендовал использовать Axistools Maven Plugin , в нашем случае он прекрасно работал.

0 голосов
/ 29 сентября 2009

Это связано с тем «гением» (или пользователем) maven / axis2, который практически принимает решения за вас ... см. Это: [Запись списка рассылки Axis2] [1]

[1]: http://markmail.org/search/?q=[Axis2]+indrit#query:[Axis2 Запись в списке рассылки]% 20indrit + страница: 1 + mid: a34wbp7l3pljagsz ​​+ состояние: результаты

0 голосов
/ 02 декабря 2008

Боюсь, что нет. Даже если бы это было так, странная проблема не возникла бы тогда - тогда путь был бы правильным, являясь testdirectory / src / test / testpackage, таким образом, не вызывая проблем с именем пакета. Теперь проблема возникает из-за того, что он помещен в каталог, которого пакет не ожидает - он ожидает $ {basedir} /testdirectory/insert.package.here.divided.by./, но вместо этого получает $ {basedir} / testdirectory / src /insert.package.here.divided.by./.

Источник не должен присутствовать в этой части пути.

0 голосов
/ 02 декабря 2008

Может быть, 'src' является частью $ {basedir}?

...