0

我正在寻找构建使用 JAX-WS 的 maven 项目的最佳方法,特别是在多个共享公共模式的 JAX-WS 项目的情况下。

例如,如果我们有以下结构

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

ProjectA和导入。ProjectB_ CommonTypes.xsd我们应该把 CommonTypes.xsd 放在哪里,我们应该如何配置 ProjectA 和 ProjectB 以便 jaxws-maven-plugin 能够正确处理它们?

4

1 回答 1

0

我建议将 CommonTypes.xsd 放在一个额外的 Maven 项目中,该项目部署到您的 Maven 存储库。为简单起见,我将其创建为 jar 项目,并且仅包含 xsd 文件。

您的 projectA 和 B 可以使用maven-dependency-plugin将 xsd 解压缩到 ProjectA/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。

于 2013-05-10T08:18:10.350 回答