org.apache.axis2 Maven插件未读取指定WSDL文件,请求解决方法
解决Axis2 WSDL2Code Maven插件读取指定WSDL文件的问题
你遇到的问题是插件没有正确读取每个<execution>里指定的WSDL文件,反而自动 fallback 到了默认的service.wsdl,这通常和插件的执行触发方式有关,下面是具体的解决步骤和调整方案:
1. 核心问题:执行方式未触发绑定的配置
如果直接运行mvn axis2-wsdl2code:wsdl2code命令,Maven会优先使用插件的全局配置(你当前的配置里没有全局<configuration>块),所以插件会加载默认的src/main/resources/service.wsdl。而你写的<execution>配置,需要绑定到Maven生命周期阶段才会生效。
2. 调整后的完整插件配置
我们给每个execution绑定到generate-sources生命周期阶段,同时建议给不同WSDL的生成代码指定独立的输出目录和包名,避免类文件冲突:
<plugin> <groupId>org.apache.axis2</groupId> <artifactId>axis2-wsdl2code-maven-plugin</artifactId> <version>1.7.9</version> <executions> <execution> <id>ws1</id> <phase>generate-sources</phase> <!-- 绑定到源码生成阶段 --> <goals> <goal>wsdl2code</goal> </goals> <configuration> <databindingName>xmlbeans</databindingName> <wsdlFile>src/main/resources/service1.wsdl</wsdlFile> <outputDirectory>target/generated-sources/ws1</outputDirectory> <!-- 独立目录避免覆盖 --> <packageName>com.yourteam.ws.service1</packageName> <!-- 指定专属包名 --> </configuration> </execution> <execution> <id>ws2</id> <phase>generate-sources</phase> <!-- 绑定到源码生成阶段 --> <goals> <goal>wsdl2code</goal> </goals> <configuration> <databindingName>xmlbeans</databindingName> <wsdlFile>src/main/resources/service2.wsdl</wsdlFile> <outputDirectory>target/generated-sources/ws2</outputDirectory> <!-- 独立目录避免覆盖 --> <packageName>com.yourteam.ws.service2</packageName> <!-- 指定专属包名 --> </configuration> </execution> </executions> </plugin>
3. 正确执行插件的命令
现在你可以通过以下方式触发插件执行:
- 执行源码生成命令,直接触发绑定的阶段:
mvn generate-sources - 或者执行编译命令,
generate-sources是compile的前置阶段,会自动执行:mvn compile - 如果只想单独执行某一个WSDL的生成,可以指定execution ID:
mvn axis2-wsdl2code:wsdl2code@ws1
额外检查点
- 确认WSDL文件路径正确:
src/main/resources/service1.wsdl是相对于项目根目录的路径,确保文件确实存在于这个位置。 - 如果你使用IDE(比如IDEA),可以刷新Maven配置,让IDE识别到新的生成目录,避免代码标红。
内容的提问来源于stack exchange,提问作者Sunil
相关产品推荐
相关产品推荐

