JAXB XJC可以在生成的类中禁止创建注释吗?

我们的项目使用XJC从XSD生成Java类。 我正在使用JAVA EE 6。

当重新生成我们拥有的所有XSD时,生成的类在文件顶部包含此注释:

// Generated on: 2011.02.23 at 02:17:06 PM GMT 

有可能压制这个评论吗? 原因是我们使用SVN进行版本控制,每次我们重新生成类时,每个文件都显示为在SVN中被更改,即使唯一不同的是此注释。 所以如果可能的话,我想完全删除评论。

有一个-no-header指令,但是我不想删除整个头文件,以便后代知道它是一个从工具生成的文件,并且修改将被覆盖。 我只想删除时间戳。 (或者,我会删除内置的标题,然后以某种方式插入我自己的标题。)

如果无法使用选项,您可以自己对生成的文件进行后处理。 对于一个非常具体的用例,我们必须在我们的项目中这样做…我们使用Maven并在生成Java类之后以及在编译并将它们打包到可分析的JAR之前执行特定的脚本。

我正在使用这个mvn插件替换// Generated on: 2011.02.23 at 02:17:06 PM GMT line // Generated on: 2011.02.23 at 02:17:06 PM GMT

  com.google.code.maven-replacer-plugin maven-replacer-plugin 1.3.8   prepare-package  replace      src/main/java/jaxb/*.java  ^// Generated on.*$ // Generated on: [TEXT REMOVED by maven-replacer-plugin]  MULTILINE    

我知道这是事实发生后2年,但由于生成了类,因此SVN中不一定需要这些类。 SVN中需要的是架构或用于生成类的源的任何文件。 只要您拥有生成类的源和工具,SVN中的类就是多余的,如您所见,在SVN或任何SCCS中存在问题。 所以把模式文件放在SVN中,完全避免这个问题。

我迟到了,但是从jaxb2-maven-plugin 2.0版开始,就有了一个noGeneratedHeaderComments配置选项。 (参见JAXB-2 Maven插件文档 )

你可以像这样使用它:

 ...   org.codehaus.mojo jaxb2-maven-plugin 2.3.1   xjc  xjc     2.1  FirstXSD.xsd SecondXSD.xsd   OptionalBindings.xjb  true    org.glassfish.jaxb jaxb-xjc ${jaxb.version}     ... 

因此无需运行其他插件或脚本。

如果您想保留免责声明,可以使用已经提到的技术之一将其注入到需要的位置。

要建立在cata的答案(upvoted)上, maven-replacer-plugin是可行的方法。 我想出了以下内容,删除了您可以用文件注释(许可证等)替换的整个注释(不仅仅是时间戳)。

  com.google.code.maven-replacer-plugin maven-replacer-plugin   prepare-package  replace       src/main/java/**/*.java  true  MULTILINE    (^//.*\u000a|^\u000a)*^package // your new comment package     

需要注意的是元素按字面意思处理文本。 因此,如果您想在替换文本中使用换行符,则需要在pom.xml文件中添加换行符(如上所述)。

如果您使用ant ,则以下代码段可能对替换注释有用:

      

你应该怎么做:

在目标中生成您的类:

 ${project.build.directory}/generated-sources 

如果你将目标添加到忽略列表(svn),那就是全部。