Maven:从WAR中排除EE API

时间:2014-07-31 05:55:14

标签: maven java-ee

问题是我在我的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黑客。

1 个答案:

答案 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?