我正在尝试将hibernate-jpamodelgen与maven-processor-plugin结合使用,使用配置from this answer生成我的JPA元模型作为Maven构建的一部分。
然而,当我进行构建时,当我尝试mvn clean install
时出现以下错误:
[ERROR] C:\Users\ArtB\Documents\code\xxx\target\classes\me\Page_.java:[11,16] error: duplicate class: me.Page_
从某些调查来看,问题似乎是生成的元模型似乎发生了两次或者什么。
如果我运行clear; mvn clean generate-sources; ls -l target\generated-sources\apt\me
我只有文件_Page.java
而没有其他文件。
在compile
阶段之后,target\classes\
文件夹只包含\me\_Page.java
...这似乎很奇怪,因为我认为.class
文件应该出现在" \ target中\类"文件夹中。
我使用debug运行构建(即-X
)并且没有看到任何可疑的内容。
我怀疑这很重要,但这是我的模特。
package me;
@Entity
@Table(name="Pages")
public class Page {
@Id @GeneratedValue
private long id;
private String title;
private Instant lastRetrieved;
private PageCategory category;
private URL source;
@Lob
private String contents;
//hashcode, equals, getters & setters omitted
}
和
package me;
public enum PageCategory {
PRODUCT,
INFO
;
}
答案 0 :(得分:7)
显然,您不需要处理器插件。只是常规编译器工作。我评论了整个
<!--
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<version>2.2.4</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>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jpamodelgen</artifactId>
<version>4.3.6.Final</version>
</dependency>
</dependencies>
</plugin>
-->
部分,它工作正常...去图。我的编译器配置是:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>