首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JAXB XJC可以抑制生成的类中的注释创建吗?

JAXB XJC可以抑制生成的类中的注释创建吗?
EN

Stack Overflow用户
提问于 2011-02-24 00:11:07
回答 9查看 11.5K关注 0票数 32

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

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

代码语言:javascript
运行
复制
// Generated on: 2011.02.23 at 02:17:06 PM GMT 

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

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

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-02-24 00:16:56

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

票数 3
EN

Stack Overflow用户

发布于 2011-08-23 19:45:13

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

代码语言:javascript
运行
复制
<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>
票数 15
EN

Stack Overflow用户

发布于 2017-07-25 17:30:34

我来晚了,但是从jaxb2-maven-plugin的2.0版本开始,就有了noGeneratedHeaderComments配置选项。(请参阅JAXB-2 Maven Plugin Docs)

你可以这样使用它:

代码语言:javascript
运行
复制
...
<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>
...

因此不需要运行另一个插件或脚本。

如果你想保留免责声明,你可以使用已经提到的技术之一在需要的地方注入它。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5093514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档