Java JAXB maven插件是否只能在发生变化时生成源代码?
对我来说,每次有maven构建时,我所有的文件都会重新生成。我不希望这样,因为我没有对我的.xsd文件做任何更改,发生的事情是,因为它们是重新生成的,git将它们视为对这些文件的更改 以下是我的配置:Java JAXB maven插件是否只能在发生变化时生成源代码?,java,eclipse,maven,jaxb,maven-jaxb2-plugin,Java,Eclipse,Maven,Jaxb,Maven Jaxb2 Plugin,对我来说,每次有maven构建时,我所有的文件都会重新生成。我不希望这样,因为我没有对我的.xsd文件做任何更改,发生的事情是,因为它们是重新生成的,git将它们视为对这些文件的更改 以下是我的配置: <execution> <id>myExecution</id> <goals> <goal>generate</goal> </goals> <configuration>
<execution>
<id>myExecution</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaDirectory>src/main/resources/MySchema.xsd</schemaDirectory>
<generatePackage>com.mypackage</generatePackage>
<generateDirectory>src/main/java</generateDirectory>
<episode>false</episode>
</configuration>
</execution>
髓鞘切除术
生成
src/main/resources/MySchema.xsd
com.mypackage
src/main/java
假的
有什么办法吗?永远不要将生成的源代码写入src/main/java目录。只需使用默认的generateDirectory值(${project.build.directory}/generated sources/xjc)——它会自动添加到编译源代码中 最佳做法是将构建过程生成的所有工件放置到maven目标目录(aka${project.build.directory})中
另外,我建议您使用,因为它似乎维护得更好。我也在寻找您需要的相同解决方案 为了避免每次重新编译代码时耗费时间,我在maven中创建了两个概要文件 第一个概要文件仅用于从XSD重新创建类:插件在概要文件中
<profile>
<id>create-from-xsd</id>
<plugins>
<plugin>
... maven jax plugin ...
</plugin>
<plugins>
<profile>
从xsd创建
... maven jax插件。。。
然后是另一个没有插件的配置文件
当我需要jax-b时,我选择概要文件1并生成类;
在其他情况下,我使用profile 2。感谢您提供的最佳实践,欢迎所有评论,但这正是评论。它并没有真正回答我的问题。它解决了git问题,因为您的源代码树不再更新其文件。你忽略了maven目标目录,对吗?你完全正确,这解决了我所有的问题。有人能指出在目标中使用生成的源目录的最佳实践背后的基本原理吗?缺点是,在使用maven构建之前,该项目将在IDE(例如eclipse)中显示编译错误。@溢出,我相信大多数现代版本的eclipse maven integration(m2e)将在没有命令行maven构建的情况下为您实现这一点。不过我已经很多年没试过了。