2

我正在使用 mavencxf-codegen-plugin从 wsdl 生成客户端文件,但无法这样做。

我希望src/main/wsdl应该扫描文件夹中的所有 wsdl 文件,并在单独的文件夹中生成相应的客户端。请帮忙。

我的 pom.xml 是:

<build>
    <finalName>someFileName</finalName>
    <pluginManagement>
        <plugins>
            <plugin>
                 <groupId>org.apache.cxf</groupId>
                 <artifactId>cxf-codegen-plugin</artifactId>
                 <version>2.2.3</version>
                 <executions>
                     <execution>
                        <id>generate-sources</id>
                        <phase>process-resources</phase>
                         <configuration>
                             <sourceRoot>src/main/java</sourceRoot>
                             <wsdlRoot>${basedir}/src/main/wsdl</wsdlRoot> 
                        </configuration>
                         <goals>
                             <goal>wsdl2java</goal>
                         </goals>
                     </execution>
                 </executions>
             </plugin>
         </plugins>
    </pluginManagement>
</build>
4

3 回答 3

4

这是我在 2.7.4 版中的做法,并在不同的包中创建了生成的代码:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>${cxf.version}</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <sourceRoot>${project.build.directory}/generated/src/main/java</sourceRoot>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>${basedir}/src/main/wsdl/MyWsdl1.wsdl</wsdl>
                                <extraargs>
                                    <extraarg>-client</extraarg>
                                    <extraarg>-verbose</extraarg>
                                    <extraarg>-p</extraarg>
                                    <extraarg>urn:mycompany:myproduct1:v1_0=com.my.project.product1</extraarg>
                                    <extraarg>-p</extraarg>
                                    <extraarg>http://www.w3.org/2001/XMLSchema=com.my.project.common</extraarg>
                                </extraargs>
                            </wsdlOption>
                            <wsdlOption>
                                <wsdl>${basedir}/src/main/wsdl/MyWsdl2.wsdl</wsdl>
                                <extraargs>
                                    <extraarg>-client</extraarg>
                                    <extraarg>-verbose</extraarg>
                                    <extraarg>-p</extraarg>
                                    <extraarg>urn:mycompany:myproduct2:v1_0=com.my.project.product2</extraarg>
                                    <extraarg>-p</extraarg>
                                    <extraarg>http://www.w3.org/2001/XMLSchema=com.my.project.common</extraarg>
                                </extraargs>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

在这里您可以找到有关额外参数的更多信息:http: //cxf.apache.org/docs/wsdl-to-java.html

对于 wsdl 文件夹的自动扫描,这也很好用:

<configuration>
                        <sourceRoot>${project.build.directory}/generated/src/main/java</sourceRoot>
                        <wsdlRoot>${basedir}/src/main/wsdl</wsdlRoot>
<includes>
    <include>**/*.wsdl</include>
</includes>
</configuration>

希望能帮助到你!

于 2013-05-21T08:30:21.713 回答
2

我意识到这是一个老问题,但我只是遇到了这个问题,所以我想为了他人的利益而回答。您在注释掉<pluginManagement>标签时是对的,请参见此处。但是对于 Eclipse 中的错误来说:

生命周期配置未涵盖插件执行

您需要为 build-helper-maven-plugin 安装 m2e 连接器(单击错误,Eclipse 会引导您安装它)

于 2015-09-23T21:30:08.443 回答
0

我将plugins标签放在标签内pluginManagement,错误消失了:

<pluginManagement>
   <plugins>
        <plugin>

            ..........................

        </plugin>
   </plugins> 
</pluginManagement>
于 2016-09-01T17:02:47.517 回答