2012-03-19 34 views
0

我正在使用Netbeans 7.1编写一个Maven构建的JSF 2.0 Web应用程序。服务器是GlassFish 3.1,EclipseLink是JPA 2.0提供者。我需要在我的Maven依赖项中包含EclipseLink modelgen包吗?

当我对项目进行“清理和构建”时,JPA元模型的所有生成源都会消失,不会再回来。所以Netbeans看到了一堆未定义的符号。到处都是红点。

奇怪的是,如果我运行该项目,那么元模型会以某种方式被生成,最终找到它回到Maven项目使用的generated-sources目录。该Web应用程序运行。但是,如果不运行应用程序,则无法生成元模型。有时需要几次传球!

通过实验发现,如果我将以下内容作为依赖项包含在内,问题部分消失。 clean-and-build仍会在输出中产生错误,但是就IDE而言,该模型会生成。

<dependency> 
     <groupId>org.eclipse.persistence</groupId> 
     <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId> 
     <version>2.3.0</version> 
    </dependency> 

有人可以解释发生了什么,也许我应该做什么?

回答

0

如果我理解正确,处理器在应用程序启动时(运行时)生成元模型。所以你必须把它包含到你的web应用程序中。

元模型类以前不存在。

3

我使用以下依赖性:

<dependency> 
    <groupId>org.eclipse.persistence</groupId> 
    <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId> 
    <version>2.5.2</version> 
    <scope>provided</scope> 
</dependency> 

经过“清理并生成”你会看到的元模型并在构建时获得建成和正在其实包含的类目标/生成-sources /注释文件夹。然后这些被放入jar文件。因此,据说你可以将这些范围限定为“提供”,以便在构建时使用,但不包含在整个分布式软件包中。

相关问题