使用Maven JAXWS的多个WSDLs配置
我需要在Maven JAXWS配置中包含多个WSDL,并且需要为它们指定不同的输出目录,因为wsdlA中的一些方法名称与wsdlB中的方法名称冲突。我使用的是org.jvnet.jax-ws-commons,我需要绑定只应用于wsdlA,而不是wsdlB 这就是我目前的情况:使用Maven JAXWS的多个WSDLs配置,maven,jax-ws,Maven,Jax Ws,我需要在Maven JAXWS配置中包含多个WSDL,并且需要为它们指定不同的输出目录,因为wsdlA中的一些方法名称与wsdlB中的方法名称冲突。我使用的是org.jvnet.jax-ws-commons,我需要绑定只应用于wsdlA,而不是wsdlB 这就是我目前的情况: <build> <pluginManagement> <plugins> <plugin> <groupId&
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- Configure Output -->
<packageName>com.mycee.project.model</packageName>
<sourceDestDir>src/main/java</sourceDestDir>
<!-- Configure WSDL Location -->
<wsdlFiles>
<wsdlFile>
${basedir}/src/jaxws/wsdl/wsdla.wsdl
</wsdlFile>
<!--
<wsdlFile>
${basedir}/src/jaxws/wsdl/wsdlb.wsdl
</wsdlFile>
-->
</wsdlFiles>
<!-- Configure Binding Location -->
<bindingDirectory>
${basedir}/src/jaxws/binding
</bindingDirectory>
<!-- Make Output Verbose -->
<verbose>true</verbose>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
org.jvnet.jax-ws-commons
jaxws-maven插件
2.1
wsimport
com.mycee.project.model
src/main/java
${basedir}/src/jaxws/wsdl/wsdla.wsdl
${basedir}/src/jaxws/binding
真的
更新:
<build>
<pluginManagement>
<plugins>
<!-- WSDL GENERATOR PLUGIN -->
<!-- mvn jaxws:wsimport -->
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3</version>
<executions>
<!-- WSDL A -->
<execution>
<id>WSDLA</id>
<phase>generate-sources</phase>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<packageName>com.mycee.project.model.wsdla</packageName> <staleFile>${project.build.directory}/jaxws/stale/wsdl.a.done</staleFile>
<wsdlFiles>
<wsdlFile>${basedir}/src/jaxws/wsdl/wsdla.wsdl</wsdlFile>
</wsdlFiles>
<bindingDirectory>${basedir}/src/jaxws/binding</bindingDirectory>
</configuration>
</execution>
<!-- WSDL B -->
<execution>
<id>WSDLB</id>
<phase>generate-sources</phase>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<packageName>com.mycee.project.model.wsdlb</packageName>
<staleFile>${project.build.directory}/jaxws/stale/wsdl.b.done</staleFile>
<wsdlFiles>
<wsdlFile>${basedir}/src/jaxws/wsdl/wsdlb.wsdl</wsdlFile>
</wsdlFiles>
</configuration>
</execution>
</executions>
<!-- Common Config -->
<configuration>
<verbose>true</verbose>
<wsdlDirectory>
${basedir}/src/jaxws/wsdl
</wsdlDirectory>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
org.jvnet.jax-ws-commons
jaxws-maven插件
2.3
WSDLA
生成源
wsimport
com.mycee.project.model.wsdla${project.build.directory}/jaxws/stale/wsdl.a.done
${basedir}/src/jaxws/wsdl/wsdla.wsdl
${basedir}/src/jaxws/binding
WSDLB
生成源
wsimport
com.mycee.project.model.wsdlb
${project.build.directory}/jaxws/stale/wsdl.b.done
${basedir}/src/jaxws/wsdl/wsdlb.wsdl
真的
${basedir}/src/jaxws/wsdl
在运行mvn clean jaxws:wsimport时,我收到以下通知,但没有生成java代码:
[信息]---jaxws maven插件:2.2:wsimport(默认cli)@
[信息]找不到要处理的WSDL,请指定
至少下列参数之一:wsdlFiles、wsdlDirectory或wsdlurl
首先,不要在pluginManagement块中配置配置。在这种情况下,最好只在pluginManagement块中定义插件的版本。此外,为了满足您的要求,您需要执行以下两种执行:
org.jvnet.jax-ws-commons
jaxws-maven插件
wsdla执行官
wsimport
com.mycee.project.model
${basedir}/src/jaxws/wsdl/wsdla.wsdl
${basedir}/src/jaxws/binding
真的
wsdlb执行器
wsimport
com.mycee.project.model
${basedir}/src/jaxws/wsdl/wsdlb.wsdl
${basedir}/src/jaxws/binding
真的
为每个wsdl都有一个执行元素,并将配置放在其中。您可以将公共配置元素保留在执行元素之外。e、 g:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<id>wsdla</id>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlFile>
${basedir}/src/jaxws/wsdl/wsdla.wsdl
</wsdlFile>
<sourceDestDir>target/gen/wsdla</sourceDestDir>
</configuration>
</execution>
<execution>
<id>wsdlb</id>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlFile>
${basedir}/src/jaxws/wsdl/wsdlb.wsdl
</wsdlFile>
<sourceDestDir>target/gen/wsdlb</sourceDestDir>
</configuration>
</execution>
</executions>
<configuration>
<!-- Configure Output -->
<packageName>com.mycee.project.model</packageName>
<!-- Configure Binding Location -->
<bindingDirectory>
${basedir}/src/jaxws/binding
</bindingDirectory>
<!-- Make Output Verbose -->
<verbose>true</verbose>
</configuration>
</plugin>
</plugins>
</pluginManagement>
org.jvnet.jax-ws-commons
jaxws-maven插件
2.1
wsdla
wsimport
${basedir}/src/jaxws/wsdl/wsdla.wsdl
target/gen/wsdla
wsdlb
wsimport
${basedir}/src/jaxws/wsdl/wsdlb.wsdl
target/gen/wsdlb
com.mycee.project.model
${basedir}/src/jaxws/binding
真的
另外,不要将生成的代码放在/main/src/java中,因为它不会被清除。我显然遗漏了一些东西,我创建了两个执行块,都使用…,运行mvn clean jaxws:wsimport,我收到以下通知:[INFO]--jaxws-maven插件:2.2:wsimport(默认cli)@--[信息]找不到要处理的wsdl,请至少指定以下参数之一:wsdlFiles、wsdlDirectory或WSDLURL。根据需要设置wsdlDirectory的文档,因为您没有使用默认值(
${basedir}/src/wsdl.
)。。此外,不要单独调用目标,最好调用生命周期,如mvn生成源代码。然后您可以查看配置等是否正常。之后使用mvn软件包
。由于您没有仔细阅读我的帖子,因为在开始的时候,关于插件管理的信息已经被提到了。一个小小的旁注-调用maven的正确目标似乎是mvn generate sources
,而不是mvn jaxws:wsimport
。对于这个答案,我显然遗漏了一些东西,我创建了两个执行块,都带有。。。,运行mvn clean jaxws:wsimport时,我收到以下通知:[INFO]--jaxws-maven插件:2.2:wsimport(默认cli)@…--[信息]未找到要删除的WSDL