当我根据http://docs.jboss.org/hibernate/stable/jpamodelgen/reference/en-US/html_single/学习Hibernate JPA 2元模型生成器时,它可以正常工作。
但是当我尝试通过运行mvn compile
生成这些元模型时,它只生成了相应的类和目标文件夹中的一个奇怪的文件夹'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文件?
提前感谢您的帮助。
答案 0 :(得分:3)
但是当我尝试通过运行mvn compile生成这些元模型时,它只生成了相应的类和一个奇怪的文件夹&quot; generated-sources&#39;在目标文件夹中,如下所示,并没有在源文件夹中生成相应的java文件。
生成的元类的默认文件夹为${project.build.directory}/generated-sources/apt
,其中${project.build.directory}
默认为target
。所以生成的元类应该在target/generated-sources/apt
目录下(因为我可以从你的截图中猜出生成元类)。
如果要更改此行为,可以使用outputDirectory
元素配置插件以将元类生成到另一个文件夹,如下所示:
<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>
并且不要忘记将新文件夹添加到类路径中,否则您的项目可能无法构建。
这是预期的行为吗?
是
如果是,那么在我每次使用元模型之前是否需要编译代码?
是的,但如果您不更改或添加新实体,则可以使用已生成的类,前提是您至少运行一次mvn compile
。
如果不是,我如何在源代码文件夹中生成java文件?
我不建议这样做:-)我的意思是将生成的类与源代码混合不是一个好主意。如果您不喜欢target
文件夹,请使用上述任何其他文件夹。