2011-02-28 114 views
2

我有一個pom文件,它是從WSDL文件中生成源代碼的。如何在Pom.xml中從WSDL生成Java源代碼?

<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)中生成的,但我希望在獨立的packageName或location中生成帶有Id2的wsdl文件。

有人能告訴我該怎麼做嗎?

回答

1

示例底部的<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

謝謝,這對我的作品..我如何添加網址,而不是這個WSDL文件詮釋他的配置。 – jimmy 2011-02-28 10:59:56

+0

你是指通過HTTP訪問WSDL文件而不是本地文件路徑? AFAIK'''元素可以包含一個HTTP URL。 – joelittlejohn 2011-02-28 15:59:17

0

我不知道要在pom.xml中進行配置,但wsdl2java工具有一個-p選項,可以讓您分別指定每個名稱空間的包。語法是here