如何配置JPAMetaModelEntityProcessor以避免出现“重复类”错误?

3
我正在尝试使用hibernate-jpamodelgen与maven-processor-plugin一起,使用此答案中的配置来生成我的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\classes"文件夹中。

我使用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
    ;
}
1个回答

9
显然,您不需要处理器插件。只需常规编译器即可工作。我将整个注释掉。
<!--
<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>
-->

我使用的是 Section,它运行良好...难以想象。我的编译器配置如下:

<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>

这里提到的编译时与运行时优势如何?https://dev59.com/mIHba4cB1Zd3GeqPYPnS - AWhitford
@AWhitford,那似乎是另一个完全不同的问题。 - Sled

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接