5

我正在寻找通过 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 设置。任何帮助是极大的赞赏。谢谢。

4

2 回答 2

4

而不是使用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。

于 2015-08-12T17:27:03.287 回答
0

我放弃并最终使用了 antrun 的 maven 插件:

<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>
于 2015-08-12T19:11:04.683 回答