Как создать исходный код Java из WSDL в Pom.xml? - PullRequest
2 голосов
/ 28 февраля 2011

У меня есть файл pom, который генерирует исходный код из файлов WSDL, который спроектирован примерно так.

    <executions>
        <execution>
        <id>Id1</id>
        <goals>
               <goal>wsimport</goal>
        </goals>
        <configuration>
            <wsdlLocation>wsdl/HelloService.wsdl</wsdlLocation>
         <wsdlFiles>
                <wsdlFile>HelloService.wsdl</wsdlFile>
        </wsdlFiles>
        <staleFile>
                ${project.build.directory}/jaxws/stale/HelloService.wsdl.stale
        </staleFile>
        </configuration>
        </execution>
        <execution>
        <id>Id2</id>
        <goals>
               <goal>wsimport</goal>
        </goals>
        <configuration>
            <wsdlLocation>wsdl/GoodByeService.wsdl</wsdlLocation>
         <wsdlFiles>
                <wsdlFile>GoodByeService.wsdl</wsdlFile>
        </wsdlFiles>
        <staleFile>
                ${project.build.directory}/jaxws/stale/GoodByeService.wsdl.stale
        </staleFile>
        </configuration>
        </execution>
    </executions>
    <configuration>
       <target>2.1</target>
       <xjcArgs>
        <xjcArg>-XautoNameResolution</xjcArg>
       </xjcArgs>
       <bindingDirectory>src/jaxws</bindingDirectory>
       <keep>true</keep>
       <wsdlDirectory>src/jaxws/wsdl</wsdlDirectory>
       <packageName>com.test.hello.soap</packageName>
    </configuration>

Это работает очень хорошо. И оба wsdl-файла генерируются в packageName (com.test.hello.soap), но я хочу, чтобы wsdl-файл с Id2 создавался в отдельном packageName или расположении.

Может кто-нибудь сказать мне, как это сделать, пожалуйста?

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

Тег <configuration> внизу вашего примера определяет значения конфигурации, которые являются общими для двух исполнений.

Если вы хотите, чтобы значение <packageName> имело одно значение для Id1 и другое значение для Id2, вам просто нужно переместить значение конфигурации <packageName> в блок <configuration> для каждого выполнения.*

Итак, это выглядит так:

<executions>
    <execution>
        <id>Id1</id>
        <goals>
            <goal>wsimport</goal>
        </goals>
        <configuration>
            <wsdlLocation>wsdl/HelloService.wsdl</wsdlLocation>
            <wsdlFiles>
                <wsdlFile>HelloService.wsdl</wsdlFile>
            </wsdlFiles>
            <staleFile>
                ${project.build.directory}/jaxws/stale/HelloService.wsdl.stale
            </staleFile>
            <!-- packageName value for Id1 -->
            <packageName>com.test.hello.soap</packageName>
        </configuration>
    </execution>
    <execution>
        <id>Id2</id>
        <goals>
           <goal>wsimport</goal>
        </goals>
        <configuration>
            <wsdlLocation>wsdl/GoodByeService.wsdl</wsdlLocation>
            <wsdlFiles>
                <wsdlFile>GoodByeService.wsdl</wsdlFile>
            </wsdlFiles>
            <staleFile>
                ${project.build.directory}/jaxws/stale/GoodByeService.wsdl.stale
            </staleFile>
            <!-- packageName value for Id2 -->
            <packageName>com.test.goodbye.soap</packageName>
        </configuration>
    </execution>
</executions>
<configuration>
    <target>2.1</target>
    <xjcArgs>
    <xjcArg>-XautoNameResolution</xjcArg>
    </xjcArgs>
    <bindingDirectory>src/jaxws</bindingDirectory>
    <keep>true</keep>
    <wsdlDirectory>src/jaxws/wsdl</wsdlDirectory>
    <!-- packageName has been removed from here -->
</configuration>
0 голосов
/ 28 февраля 2011

Я не знаю, какую конфигурацию нужно выполнить в pom.xml, но инструмент wsdl2java имеет опцию -p, которая позволит вам указать пакет для каждого пространства имен отдельно. Синтаксис здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...