我正在使用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>
也许我使用的是错误的标签,或者可能是在错误的地方?
答案 0 :(得分:18)
将<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
答案 1 :(得分:1)
这对我很有用:
<servlet>
<description>
</description>
<display-name>DispatcherServlet</display-name>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<description>contextClass</description>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</init-param>
<init-param>
<description>contextConfigLocation</description>
<param-name>contextConfigLocation</param-name>
<param-value>com.xxx.yyy.jdorderspringmvcweb.config.SpringMvcConfig</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
答案 2 :(得分: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