问题是我在我的Web应用程序中使用Hibernate 4.3导致以下工件包含在WAR中:
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
从依赖层次结构开始,Hibernate-core需要这个工件:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate-core.version}</version>
</dependency>
我手动将其包含在具有提供范围的POM中,然后将其从WAR程序集中排除。
我在质疑如何从构建中排除所有容器提供的API?
显然,非容器特定的解决方案将是最好的,但至少需要Glassfish黑客。
答案 0 :(得分:1)
您需要为以下内容设置范围:
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
<scope>provided</scope>
</dependency>
如果您确定hibernate核心不需要它(我不确定),您需要排除。 此外,我有疑问因为在上面的工件中有一些定义的例外,所以你不应该排除它们。问题是你在哪个容器中使用它?这个容器是否已提供JPA?