2013-05-09 97 views
0

我正在尋找結構使用JAX-WS的Maven項目的最佳方法,特別是在共享公共模式的多個JAX-WS項目中。爲基於JAX-WS的Maven項目共享公共模式的最佳實踐

例如,如果我們有如下的結構

ProjectA  
    |- pom.xml  
    \- src 
     \- wsdl 
       \- projectA.wsdl 
ProjectB  
    |- pom.xml  
    \- src 
     \- wsdl 
       \- projectB.wsdl 

兩個ProjectAProjectB進口CommonTypes.xsd。我們應該在哪裏放置CommonTypes.xsd,我們應該如何配置ProjectA & ProjectB,以便jaxws-maven-plugin能夠正確處理它們?

回答

0

我會建議把CommonTypes.xsd放到一個額外的Maven項目中,該項目被部署到你的Maven倉庫。爲了簡單起見,我將創建這個jar項目,只包含xsd文件。

的你了projectA和B可以使用maven-dependency-plugin到xsd解壓到項目A/B一個特定的文件夾,您的WSDL是期待的xsd:

 <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.7</version> 
    <executions> 
     <execution> 
     <id>unpack</id> 
     <phase>generate-sources</phase> 
     <goals> 
      <goal>unpack</goal> 
     </goals> 
     <configuration> 
      <artifactItems> 
      <artifactItem> 
       <groupId>groupId</groupId> 
       <artifactId>commont-types-xsd</artifactId> 
       <version>1.0</version> 
       <type>jar</type> 
       <overWrite>true</overWrite> 
       <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory> 
      </artifactItem> 
      </artifactItems> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

也許你需要玩的執行順序因爲jaxws-plugin也在generate-sources循環中運行,或者可能會將依賴項插件更改爲早期階段。

另一種解決方案是創建額外的項目,並有類似於目錄服務服務器的東西,如果您存儲所有項目中常見的xsd文件,並且wsdl只需指向此服務器url即可。

+0

我接受這個答案,因爲這正是我現在正在做的。 – 2013-05-14 01:01:51