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

2022-09-01 08:56:15

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

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

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

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

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


答案 1

我正在使用这个Maven插件,它取代了这条线:// Generated on: 2011.02.23 at 02:17:06 PM GMT

<plugin>
    <groupId>com.google.code.maven-replacer-plugin</groupId>
    <artifactId>maven-replacer-plugin</artifactId>
    <version>1.3.8</version>
    <executions>
        <execution> 
            <phase>prepare-package</phase>                          
            <goals>
                <goal>replace</goal>
            </goals>
        </execution>
    </executions>
    <configuration>                         
        <includes>                              
            <include>src/main/java/jaxb/*.java</include>            
        </includes>
        <token>^// Generated on.*$</token>
        <value>// Generated on: [TEXT REMOVED by maven-replacer-plugin]</value>                         
        <regexFlags>
            <regexFlag>MULTILINE</regexFlag>
        </regexFlags>
    </configuration>
</plugin>

答案 2

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

你可以这样使用它:

...
<plugins>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxb2-maven-plugin</artifactId>
        <version>2.3.1</version>
        <executions>
            <execution>
                <id>xjc</id>
                <goals>
                    <goal>xjc</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <target>2.1</target>
            <sources>
                <source>FirstXSD.xsd</source>
                <source>SecondXSD.xsd</source>
            </sources>
            <xjbSources>
                <xjbSource>OptionalBindings.xjb</xjbSource>
            </xjbSources>
            <noGeneratedHeaderComments>true</noGeneratedHeaderComments>
        </configuration>
        <dependencies>
            <dependency>
                <groupId>org.glassfish.jaxb</groupId>
                <artifactId>jaxb-xjc</artifactId>
                <version>${jaxb.version}</version>
            </dependency>
        </dependencies>
    </plugin>
</plugins>
...

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

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


推荐