首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >maven-jaxb2-plugin forceRegenerate=false不工作?

maven-jaxb2-plugin forceRegenerate=false不工作?
EN

Stack Overflow用户
提问于 2014-03-18 17:28:09
回答 3查看 4.1K关注 0票数 6

我正在尝试将maven-jaxb2-plugin配置为仅在XSD更改时生成java。这似乎不起作用,因为java类总是重新生成的。这是插件配置:

代码语言:javascript
复制
<plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <version>0.8.3</version>
            <configuration>
                <generateDirectory>${basedir}/src/main/java/</generateDirectory>
                <strict>true</strict>
                <verbose>true</verbose>
                <readOnly>true</readOnly>
                <episode>true</episode>
                <forceRegenerate>false</forceRegenerate>  
                <removeOldOutput>false</removeOldOutput>
            </configuration>
            <executions>
                <execution>
                    <id>commun-generate</id>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <generatePackage>my.package.dest</generatePackage>
                        <schemaDirectory>${basedir}/src/main/resources/schemas/wsrest</schemaDirectory>
                        <bindingDirectory>${basedir}/src/main/resources/schemas/wsrest</bindingDirectory>
                        <bindingIncludes>
                            <include>bindings.xml</include>
                        </bindingIncludes>
                        <episodeFile>${basedir}/src/main/java/META-INF/sun-jaxb_commun.episode</episodeFile>
                    </configuration>
                </execution>

在构建(maven全新安装或maven安装)时,我可以观察到以下输出:

代码语言:javascript
复制
[INFO] File [D:\IDE\Data\Eclipse\workspace\MyProject\src\main\resources\schemas\wsrest\myXSD.xsd] was changed since the last build.
[INFO] File [D:\IDE\Data\Eclipse\workspace\MyProject\src\main\resources\schemas\wsrest\bindings.xml] was changed since the last build. 
[INFO] File [D:\IDE\Data\Eclipse\workspace\MyProject\pom.xml] was changed since the last build.

但自上次构建以来,我没有更改这些文件中的任何内容!

我做错了什么?

提前感谢

Clément

EN

回答 3

Stack Overflow用户

发布于 2015-05-13 17:15:53

作为部分变通方法,您可以将<noFileHeader>true</noFileHeader>添加到您的配置中,以便生成的源代码对于未更改的XSD是相同的。解决了我的仓库提交问题,如果这对你也很重要的话……

不能阻止XJC重新生成,它似乎只检查时间戳。

票数 1
EN

Stack Overflow用户

发布于 2015-10-23 02:56:39

由于以下原因,没有办法停止重新生成:我遇到了同样的问题,我仔细研究了插件代码,找出了根本原因:

org.jvnet.jaxb2.maven2.RawXJC2Mojo.isUpToDate中的最新检查使用if (getBuildContext().hasDelta(dependsFile)),它将委托给org.sonatype.plexus.build.incremental.DefaultBuildContext.hasDelta,它被硬编码为返回true。这是因为增量构建的概念在Maven c.f中被打破了。Incremental Build

可以更改该逻辑以检查输出目录是否存在,如果存在,则检查XSD是否已更改。如果我有时间,我可能会写个bug。

票数 1
EN

Stack Overflow用户

发布于 2014-03-20 04:09:30

这些文件真的重新生成了吗?我有以下几点:

代码语言:javascript
复制
[INFO] File [C:\Projects\workspace-juno\maven-jaxb2-plugin-project\tests\po\src\main\resources\purchaseorder.xsd] was changed since the last build.
[INFO] File [C:\Projects\workspace-juno\maven-jaxb2-plugin-project\tests\po\pom.xml] was changed since the last build.
[INFO] Checking up-to-date depends [[C:\Projects\workspace-juno\maven-jaxb2-plugin-project\tests\po\src\main\resources\purchaseorder.xsd, C:\Projects\workspace-juno\maven-jaxb2-plugin-project\tests\po\pom.xml]].
[INFO] Checking up-to-date produces [[C:\Projects\workspace-juno\maven-jaxb2-plugin-project\tests\po\target\generated-sources\xjc\generated\Items.java, C:\Projects\workspace-juno\maven-jaxb2-plugin-project\tests\po\target\generated-sources\xjc\generated\ObjectFactory.java, C:\Projects\workspace-juno\maven-jaxb2-plugin-project\tests\po\target\generated-sources\xjc\generated\PurchaseOrderType.java, C:\Projects\workspace-juno\maven-jaxb2-plugin-project\tests\po\target\generated-sources\xjc\generated\USAddress.java, C:\Projects\workspace-juno\maven-jaxb2-plugin-project\tests\po\target\generated-sources\xjc\META-INF\sun-jaxb.episode]].
[INFO] Depends timestamp [1.395.259.386.093], produces timestamp [1.395.259.394.765].
[INFO] Skipped XJC execution. Generated sources were up-to-date.

似乎提供的org.sonatype.plexus.build.incremental.BuildContext显示文件已更改。但是当插件专门检查时间戳时,它会发现文件是最新的。我认为问题只是在日志消息中,它应该是may have been changed

请提交问题here

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

https://stackoverflow.com/questions/22475108

复制
相关文章

相似问题

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