首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Maven从WSDL生成Java时指定包名

使用Maven从WSDL生成Java时指定包名
EN

Stack Overflow用户
提问于 2012-03-22 02:13:45
回答 3查看 22.3K关注 0票数 13

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

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

代码语言:javascript
复制
        <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>

也许我用错了标签,或者它放错了地方?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-22 02:59:01

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

代码语言:javascript
复制
       <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>

或者,使用content -p com.name.server.cxfsrc/com/server/cxf/code-generation/中创建文件service-options

票数 22
EN

Stack Overflow用户

发布于 2015-08-13 14:31:43

这对我来说非常有效:

代码语言:javascript
复制
<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>
票数 2
EN

Stack Overflow用户

发布于 2017-08-14 17:53:30

使用

命令对上述解决方案执行

代码语言:javascript
复制
<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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9810422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档