1

我正在使用 cxf-codegen maven 插件。我第一次执行 mvn install 时,它生成了一组文件,它们被放置在 target/generated-sources/cxf 文件夹中,所有生成的文件都由 maven 编译并打包到生成的 jar 中.

现在我发现由于某种原因,在创建其余响应时未从 package--info.java 中获取命名空间属性。所以我的服务器抛出一个错误说

 javax.xml.bind.UnmarshalException:
 unexpected element (uri:"", local:"com.collabnet.teamforge.ia.types.GetConfigurationParametersResponse"). 
Expected elements are 
\lt{http://www.collab.net/teamforge/integratedapp}CreateProjectConfigurationRequest\gt,
\lt{http://www.collab.net/teamforge/integratedapp}GetConfigurationParametersRequest\gt,
\lt{http://www.collab.net/teamforge/integratedapp}GetConfigurationParametersResponse\gt,
\lt{http://www.collab.net/teamforge/integratedapp}GetPageComponentParametersRequest> 

所以我打算做的是,将生成的文件(GetConfigurationParametersResponse.java)中的命名空间属性设置为

@XmlRootElement(name = "GetConfigurationParametersResponse" , namespace = "http://...")

. 目前我进行了更改并进行了 Maven 安装,但似乎没有任何反应。那就是 maven install 忽略了生成文件中的更改。它没有被编译。

所以我的问题是

如何使我在生成的文件中所做的更改在 maven 安装期间得到反映和编译?

4

1 回答 1

2

如果您将“-xjc-npa”标志添加到 wsdl2java,它应该为您填写所有命名空间属性,并且不生成 package-info.java 内容。如果确实是问题,那可能会解决问题。也就是说,如果它仍然生成 namespace="" 属性,则可能意味着 wsdl 中的模式是错误的,并且其中没有 elementFormDefault="qualified" 属性。

于 2013-07-31T15:51:13.290 回答