2017-06-24 54 views
1

         當我根據http://docs.jboss.org/hibernate/stable/jpamodelgen/reference/en-US/html_single/瞭解到Hibernate JPA 2元模型生成器時,它工作正常。
       但是,當我試圖產生這些元模型由運行mvn compile,它只產生對應的類和如以下目標文件夾中的一個文件夾怪「中產生來源」,並且不產生在源文件夾對應的Java文件。 enter image description here如何使用Hibernate JPA 2元模型生成器?

下面是我的相關配置在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文件?

非常感謝您的幫助。

回答

2

但是,當我試圖產生這些元模型由運行MVN編譯,它只產生對應的類和如以下目標文件夾中的一個文件夾怪「中產生來源」,並且不產生在源文件夾對應的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> 

而且不要忘了添加將新文件夾放入您的類路徑中,否則您的項目可能無法構建。

這是預期的行爲?

如果是,這是否意味着我需要在我使用的元模型每次編譯的代碼?

是的,但如果不改變或增加新的實體,您可以使用所提供的generaed類運行mvn compile至少一次。

如果不是,我該如何在源代碼文件夾中生成java文件?

我不建議這樣做:-)我的意思是混合生成的類和源代碼不是一個好主意。如果您不喜歡target文件夾,請使用上述任何其他文件夾。

+0

元類實際上是在target/generated-sources/apt中生成的。但它們也在目標/類文件夾中生成。這意味着在兩個文件夾中生成相同的元類。它預期的行爲? – Xiaoyuan

+0

除非你有一些你沒有發佈的東西,否則根據你發佈的配置應該是不可能的。但編譯後的類應該在'target/classes'下;源代碼不應該存在,例如源類,例如* MyEntity_.java *轉到'generated-sources'文件夾,而像* MyEntity_.class *這樣的編譯類將位於'target/classes'文件夾下。 – ujulu

+0

謝謝你的回覆。這真的很有幫助。 – Xiaoyuan

相關問題