如何使用 Hibernate JPA 2 元模型生成器?
How to use Hibernate JPA 2 Metamodel Generator?
当我根据 http://docs.jboss.org/hibernate/stable/jpamodelgen/reference/en-US/html_single/ 学习 Hibernate JPA 2 元模型生成器时,它工作正常。
但是当我尝试通过 运行 [=11= 生成这些元模型时], 它只在目标文件夹中生成了对应的类和一个奇怪的文件夹'generated-sources',并没有在源文件夹中生成对应的java文件。
下面是我在pom.xml中的相关配置:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-proc:none</compilerArgument>
</configuration>
</plugin>
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<processors>
<processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
</processors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
所以,我的问题是:这是预期的行为吗?如果是,是否意味着我每次使用元模型之前都需要编译代码?如果不是,我如何在源代码文件夹中生成 java 个文件?
提前感谢您的帮助。
But when I tried to generate these metamodel by run mvn compile, it only generated corresponding classes and a strange folder 'generated-sources' in target folder as below and does not generated corresponding java files in source folder.
生成的元 classes 的默认文件夹是 ${project.build.directory}/generated-sources/apt
,其中 ${project.build.directory}
默认为 target
。所以生成的 meta classes 应该在 target/generated-sources/apt
目录下(我可以从你的截图中猜到生成了 meta classes)。
如果您想更改此行为,您可以配置插件以使用 outputDirectory
元素将元 classes 生成到另一个文件夹,如下所示:
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<processors>
<processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
</processors>
<outputDirectory>${project.basedir}/generated</outputDirectory>
</configuration>
</execution>
</executions>
并且不要忘记将新文件夹添加到您的 class 路径中,否则您的项目可能无法构建。
is this expected behavior?
是
If yes, does it mean that I need to compile code before I use metamodel each time?
是的,但如果您不更改或添加新实体,您可以使用生成的 classes,前提是您 运行 mvn compile
至少一次。
If no, how can I generate java files in source code folder?
我不建议这样做 :-) 我的意思是将生成的 classes 与源代码混合不是一个好主意。如果您不喜欢 target
文件夹,请使用上述任何其他文件夹。
当我根据 http://docs.jboss.org/hibernate/stable/jpamodelgen/reference/en-US/html_single/ 学习 Hibernate JPA 2 元模型生成器时,它工作正常。
但是当我尝试通过 运行 [=11= 生成这些元模型时], 它只在目标文件夹中生成了对应的类和一个奇怪的文件夹'generated-sources',并没有在源文件夹中生成对应的java文件。
下面是我在pom.xml中的相关配置:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-proc:none</compilerArgument>
</configuration>
</plugin>
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<processors>
<processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
</processors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
所以,我的问题是:这是预期的行为吗?如果是,是否意味着我每次使用元模型之前都需要编译代码?如果不是,我如何在源代码文件夹中生成 java 个文件?
提前感谢您的帮助。
But when I tried to generate these metamodel by run mvn compile, it only generated corresponding classes and a strange folder 'generated-sources' in target folder as below and does not generated corresponding java files in source folder.
生成的元 classes 的默认文件夹是 ${project.build.directory}/generated-sources/apt
,其中 ${project.build.directory}
默认为 target
。所以生成的 meta classes 应该在 target/generated-sources/apt
目录下(我可以从你的截图中猜到生成了 meta classes)。
如果您想更改此行为,您可以配置插件以使用 outputDirectory
元素将元 classes 生成到另一个文件夹,如下所示:
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<processors>
<processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
</processors>
<outputDirectory>${project.basedir}/generated</outputDirectory>
</configuration>
</execution>
</executions>
并且不要忘记将新文件夹添加到您的 class 路径中,否则您的项目可能无法构建。
is this expected behavior?
是
If yes, does it mean that I need to compile code before I use metamodel each time?
是的,但如果您不更改或添加新实体,您可以使用生成的 classes,前提是您 运行 mvn compile
至少一次。
If no, how can I generate java files in source code folder?
我不建议这样做 :-) 我的意思是将生成的 classes 与源代码混合不是一个好主意。如果您不喜欢 target
文件夹,请使用上述任何其他文件夹。