我需要添加包级别的注释(XmlJavaTypeAdapters类型的适配器)。 问题是,当我运行的WSDL2Java它产生package-info.java文件为包。
当我尝试添加自己的package-info.java我得到错误:“该型包INGO已定义”。
有没有一种方法来注入我的注释package-info.java? 也许任何其他的想法?
谢谢
我需要添加包级别的注释(XmlJavaTypeAdapters类型的适配器)。 问题是,当我运行的WSDL2Java它产生package-info.java文件为包。
当我尝试添加自己的package-info.java我得到错误:“该型包INGO已定义”。
有没有一种方法来注入我的注释package-info.java? 也许任何其他的想法?
谢谢
经过一番研究,我所使用的外部映射文件。 对于所有有类似的问题来挖掘我在下面我所发现的描述。
如果您使用的是“CxF-CODEGEN-插件”从WSDL生成源代码,你将无法使用package-info.java解决方案。 这是因为生成的代码propably已经包含这个文件。 因为它产生你也不能添加注释到您的类。 唯一的办法是提供自己的映射。
首先你必须编写自定义的映射。 之后,你应该定义XJB映射文件最后加上额外的配置,以你的pom.xml。 你可以阅读前两步这里 。
外部映射文件添加到您要添加的东西像这样配置节点在插件定义CXF-CODEGEN-插件:
<defaultOptions>
<bindingFiles>
<bindingFile>${basedir}/src/main/resources/mapping.xjb</bindingFile>
</bindingFiles>
<noAddressBinding>true</noAddressBinding>
</defaultOptions>
请注意,你不应该将额外的参数作为描述XJC 在这里 ,因为它不会工作。
希望这将帮助任何人:)
我从来没有尝试过这一点,但你可以尝试添加-xjc-NPA标志中的WSDL2Java命令。 从理论上讲,它告诉XJC不生成package-info.java,而是贴在需要的地方的所有其他元素的所有命名空间和这样的。
可以在WSDL或作为一个单独的外部绑定文件提供JAXB“绑定”,无论是内联的,和JAXB将产生适当的适配器和所需的程序包级别注释。 见这个问题的一个例子。
我需要添加注释,以生成代码。 我使用的Maven的替代品 - 插件来做到这一点生成的Java类之后。 您可以使用此解决方案来修改出来的任何文件。
下面是相关的pom.xml位:
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>${replacer.plugin.version}</version>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<filesToInclude>target/generated-sources/cxf/com/BLAH/client/api/v4/*.java</filesToInclude>
<filesToExclude>target/generated-sources/cxf/com/BLAH/client/api/v4/ObjectFactory.java,
target/generated-sources/cxf/com/BLAH/client/api/v4/package-info.java,
</filesToExclude>
<replacements>
<replacement>
<!-- Add @XmlRootElement in front of public class Blah -->
<token>public class (\w*)</token>
<value>@XmlRootElement(name ="$1") ${line.separator}public class $1</value>
</replacement>
<replacement>
<!-- Add the import for the XmlRootElement annotation to the file -->
<token>import javax.xml.bind.annotation.XmlType;</token>
<value>import javax.xml.bind.annotation.XmlType;${line.separator}import javax.xml.bind.annotation.XmlRootElement;</value>
</replacement>
</replacements>
</configuration>
</plugin>
希望这可以帮助!