2012-03-21 46 views
11

我正在使用Maven腳本生成我需要與WCF服務通信的Java代碼。我已經獲得了溝通工作,並且準備好將我的maven腳本和它生成的代碼與項目中其餘的java代碼進行整合。使用Maven從WSDL生成Java時指定程序包名稱

但是,我不能讓maven生成我想要的正確包名的代碼。從我在網上閱讀的內容中,我應該使用標籤,並且我已經看到了兩個可能的地方。我已經包含了我認爲需要進入的腳本部分,並且他們都在那裏。然而,這些標籤會影響什麼,代碼生成正如它沒有他們

 <plugin> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-codegen-plugin</artifactId> 
      <version>${cxf.version}</version> 
      <configuration> 
         <packageName>com.name.server.cxf</packageName>      
        <sourceRoot>src/com/server/cxf</sourceRoot> 
         <wsdlOptions> 
          <wsdlOption> 
           <wsdl>src/com/server/cxf/code-generation/service.xml</wsdl> 
           <bindingFiles> 
            <bindingFile>src/com/server/cxf/code-generation/javabindings.xml</bindingFile> 
           </bindingFiles> 
           <extraargs> 
            <extraarg>-validate</extraarg> 
            <extraarg>-client</extraarg> 
            <extraarg>-verbose</extraarg> 
            <extraarg>-xjc-verbose</extraarg> 
           </extraargs> 
          </wsdlOption> 
         </wsdlOptions> 
         <verbose /> 
        </configuration> 
      <executions> 
       <execution> 
        <id>generate-sources</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>wsdl2java</goal> 
        </goals> 
        <configuration> 
         <packageName>com.name.server.cxf</packageName>  
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

也許我使用了錯誤的標籤,或者是放錯了地方?

+1

決不產生源到SRC/...更好的使用目標/ ... – khmarbaise 2012-03-22 09:04:24

回答

18

<extraarg>-p</extraarg><extraarg>com.name.server.cxf</extraarg>加到您的<extraargs>部分內<wsdlOption>標記。以下(略有不同的版本)適用於我。

 <plugin> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-codegen-plugin</artifactId> 
      <version>${cxf.version}</version> 
      <executions> 
       <execution> 
        <id>generate-sources</id> 
        <phase>generate-sources</phase> 
        <configuration> 
         <wsdlOptions> 
          <wsdlOption> 
           <wsdl>src/com/server/cxf/code-generation/service.xml</wsdl> 
           <bindingFiles> 
            <bindingFile>src/com/server/cxf/code-generation/javabindings.xml</bindingFile> 
           </bindingFiles> 
           <extraargs> 
            <extraarg>-validate</extraarg> 
            <extraarg>-client</extraarg> 
            <extraarg>-verbose</extraarg> 
            <extraarg>-xjc-verbose</extraarg> 
            <extraarg>-p</extraarg> 
            <extraarg>com.name.server.cxf</extraarg> 
           </extraargs> 
          </wsdlOption> 
         </wsdlOptions> 
        </configuration> 
        <goals> 
         <goal>wsdl2java</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

或者,在src/com/server/cxf/code-generation/創建一個文件service-options與內容-p com.name.server.cxf

+0

不幸的是,這些似乎都沒有任何影響... 只要可以肯定,服務選項文件不需要擴展? – crdzoba 2012-03-21 19:38:40

+0

是的,沒有擴展名。我相信這個格式是 -options你有serviceName.wsdl – aliasmrchips 2012-03-21 20:13:48

+0

我第一次嘗試的時候我把-p和com.name.server.cxf放在同一行的標籤中......這可能是這個問題。 我得到了一個錯誤,當我再次做了,但後來我加了 -autoNameResolution低於你建議的兩個標籤,現在似乎工作!非常感謝! – crdzoba 2012-03-21 20:19:45

1

這工作對我非常好:

<wsdlOption> 
           <wsdl>src/main/resources/wsdl/my_wsdl.wsdl</wsdl> 
           <extraargs> 
            <extraarg>-p</extraarg> 
            <extraarg>http://services.demo.es/=com.my.package.demo1</extraarg> 
            <extraarg>-p</extraarg> 
            <extraarg>http://tempuri.org/=com.my.package.demo2</extraarg> 
            <extraarg>-exsh</extraarg> 
            <extraarg>true</extraarg> 
            <extraarg>-client</extraarg> 
            <extraarg>-wsdlLocation</extraarg> 
            <extraarg></extraarg> 
           </extraargs> 
          </wsdlOption> 
0

上述解決方案與

<extraarg>-p</extraarg> 
<extraarg>com.name.server.cxf</extraarg> 

正在更改一個包下的生成源的包名,因爲其中的ObjectFactory類正在越來越多。我需要像基於wsld的包結構。隨附補充包。

例如Java類是作爲com.service.name.mypackage.a,com.service.name.mypackage.b,com.service.name.mypackage.c產生

相關問題