Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为基于JAX-WS的maven项目共享公共模式的最佳实践_Maven_Jax Ws - Fatal编程技术网

为基于JAX-WS的maven项目共享公共模式的最佳实践

为基于JAX-WS的maven项目共享公共模式的最佳实践,maven,jax-ws,Maven,Jax Ws,我正在寻找构造使用JAX-WS的maven项目的最佳方法,特别是在多个JAX-WS项目共享公共模式的情况下 例如,如果我们有以下结构 ProjectA |- pom.xml \- src \- wsdl \- projectA.wsdl ProjectB |- pom.xml \- src \- wsdl \- projectB.wsdl

我正在寻找构造使用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插件能够正确处理它们?

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

您的projectA和B可以使用将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>

org.apache.maven.plugins
maven依赖插件
2.7
打开
生成源
打开
groupId
常见类型xsd
1
罐子
真的
${project.build.directory}/alternateLocation
可能您需要调整执行顺序,因为jaxws插件也在generatesources循环中运行,或者可能将依赖插件更改为早期阶段


另一个解决方案是创建一个额外的项目,如果您存储所有项目中通用的xsd文件,并且wsdl只需要指向这个服务器url,那么就可以使用类似目录服务服务器的东西。

我接受这个答案,因为这正是我目前正在做的事情。