我正在寻找构建使用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能够正确处理它们吗?
答案 0 :(得分: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。