14

我正在使用 maven 脚本来生成与 WCF 服务通信所需的 Java 代码。我已经开始进行通信,并准备将我的 maven 脚本及其生成的代码与项目中的其余 java 代码集成在一起。

但是,我无法让 maven 生成具有我想要的正确包名称的代码。根据我在网上阅读的内容,我应该使用该标签,并且我已经看到了两个可能的地方。我已经包含了我认为需要进入的脚本部分,并且它们都在那里。但是,这些标签不会产生任何影响,并且代码生成就像没有它们一样

        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>${cxf.version}</version>
            <configuration>
                        <packageName>com.name.server.cxf</packageName>                      
                    <sourceRoot>src/com/server/cxf</sourceRoot>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>src/com/server/cxf/code-generation/service.xml</wsdl>
                                <bindingFiles>
                                    <bindingFile>src/com/server/cxf/code-generation/javabindings.xml</bindingFile>
                                </bindingFiles> 
                                <extraargs>
                                    <extraarg>-validate</extraarg>
                                    <extraarg>-client</extraarg>
                                    <extraarg>-verbose</extraarg>
                                    <extraarg>-xjc-verbose</extraarg>
                                </extraargs>
                            </wsdlOption>
                        </wsdlOptions>
                        <verbose />
                    </configuration>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                    <configuration>
                        <packageName>com.name.server.cxf</packageName>      
                    </configuration>
                </execution>
            </executions>
        </plugin>

也许我使用了错误的标签,或者它在错误的地方?

4

3 回答 3

23

添加<extraarg>-p</extraarg><extraarg>com.name.server.cxf</extraarg>到标签<extraargs>内的部分。<wsdlOption>以下(略有不同的版本)对我有用。

       <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>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>src/com/server/cxf/code-generation/service.xml</wsdl>
                                <bindingFiles>
                                    <bindingFile>src/com/server/cxf/code-generation/javabindings.xml</bindingFile>
                                </bindingFiles>
                                <extraargs>
                                    <extraarg>-validate</extraarg>
                                    <extraarg>-client</extraarg>
                                    <extraarg>-verbose</extraarg>
                                    <extraarg>-xjc-verbose</extraarg>
                                    <extraarg>-p</extraarg>
                                    <extraarg>com.name.server.cxf</extraarg>
                                </extraargs>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

或者,创建一个包含内容service-options的文件src/com/server/cxf/code-generation/-p com.name.server.cxf

于 2012-03-21T18:59:00.863 回答
2

这对我来说非常有效:

<wsdlOption>
                                <wsdl>src/main/resources/wsdl/my_wsdl.wsdl</wsdl>
                                <extraargs>
                                    <extraarg>-p</extraarg>
                                    <extraarg>http://services.demo.es/=com.my.package.demo1</extraarg>
                                    <extraarg>-p</extraarg>
                                    <extraarg>http://tempuri.org/=com.my.package.demo2</extraarg>
                                    <extraarg>-exsh</extraarg>
                                    <extraarg>true</extraarg>
                                    <extraarg>-client</extraarg>
                                    <extraarg>-wsdlLocation</extraarg>
                                    <extraarg></extraarg>
                                </extraargs>
                            </wsdlOption>
于 2015-08-13T06:31:42.950 回答
0

上述解决方案与

<extraarg>-p</extraarg>
<extraarg>com.name.server.cxf</extraarg>

正在更改单个包下生成的源的包名称,因为哪些 ObjectFactory 类正在被覆盖。我需要像基于 wsld 的包结构。连同附加包。

示例 java 类生成为 com.service.name.mypackage.a,com.service.name.mypackage.b,com.service.name.mypackage.c

于 2017-08-14T09:53:30.377 回答