我希望通过maven执行wsdl2java并尝试了几种不同的方法但没有取得圆满成功。我这样做的第一种方式:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>org.apache.axis.wsdl.WSDL2Java</mainClass>
<arguments>
<argument>-client</argument>
<argument>-o</argument>
<argument>gensrc</argument>
<argument>wsdl/JobAPIWebWrapped.wsdl</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
由于调用org.apache.axis.wsdl.WSDL2Java,此版本将创建我正在寻找的确切结构,但除此之外不会继续使用任何其他maven插件。它以执行main或其他东西结束日志。
我尝试过的另一种方法:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>3.1.2</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>gensrc</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>wsdl/JobAPIWebWrapped.wsdl</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
此执行的问题在于它生成的java文件比之前执行的更高版本生成的文件要多得多。我检查了这个更大的文件集的兼容性,发现它可以正常工作,但是想找到一种方法来强制它使用与第一个例子相同的java类来执行。但是,这个版本将完成,并允许我转到maven调用的以下插件。
第三
<plugin>
<groupId>org.apache.axis</groupId>
<artifactId>wsdl2java-maven-plugin</artifactId>
<version>1.4.1-SNAPSHOT</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<implementationClassName>org.apache.axis.wsdl.WSDL2Java</implementationClassName>
</configuration>
</execution>
</executions>
</plugin>
这个版本甚至没有被识别出来......想知道我是否错误地调用了这个插件,因为它甚至没有出现在详细记录的任何地方。
我一直在搜索,但尚未找到成功的答案。我非常接近于编写一个shell脚本来运行maven设置,通过调用第一个示例然后继续。任何帮助是极大的赞赏。感谢。
答案 0 :(得分:3)
您应该使用exec-maven-plugin
,而不是使用WSDL2Java
调用axistools-maven-plugin
。您的pom
将如下所示:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>axistools-maven-plugin</artifactId>
<version>1.4</version>
<configuration>
<wsdlFiles>
<wsdlFiles>wsdl/JobAPIWebWrapped.wsdl</wsdlFiles>
</wsdlFiles>
</configuration>
<executions>
<execution>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
顺便说一下,Apache Axis已经很老了,很破旧。您应该考虑迁移到更新且更强大的Apache CXF。
答案 1 :(得分:0)
我放弃并最终使用了针对maven的antrun插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>process-classes</phase>
<configuration>
<tasks>
<java classname="org.apache.axis.wsdl.WSDL2Java" fork="true">
<arg value="-client"/>
<arg value="-o"/>
<arg value="gensrc"/>
<arg value="wsdl/JobAPIWebWrapped.wsdl"/>
<classpath refid="maven.compile.classpath"/>
</java>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>