Jboss 7.1.1正确的hibernate依赖

时间:2015-06-10 14:17:10

标签: java hibernate maven jboss jboss-modules

我正在查看我试图在Jboss AS 7.1.1上运行的旧项目的pom.xml。这个pom包含许多与工件的依赖关系,如:

  • hibernate-core
  • hibernate-validator
  • 冬眠-JPA-2.0-API
  • 冬眠-的EntityManager
  • ...

由于Jboss 7.1.1有一个模块org.hibernate我已设法通过创建hibernate-core以及以下内容来删除\META-INF\jboss-deployment-structure.xml以外的这些依赖项:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
    <deployment>
        <dependencies>
            <module name="org.hibernate"/>
        </dependencies>
    </deployment>
</jboss-deployment-structure>

因此,为了能够编译WAR文件,我需要具有此依赖性

<dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${hibernate.version}</version>
</dependency>

但我无法理解为什么我无法用provided范围设置它。如果它包含在org.hibernate模块中,为什么我不能这样做?如果我将其设置为provided,则会收到以下错误:

Initial SessionFactory creation failed.java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration

我想用provided范围设置它只是为了将它从WAR文件中排除

1 个答案:

答案 0 :(得分:1)

如果你在项目中使用maven更好地提供hibernate和支持的模块作为清单条目,而不是jboss-deployment-structure.xml。你可以通过跟随pom.xml中的代码

来实现这一点
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<archive>
<manifestEntries>
<Dependencies>
org.infinispan,org.hibernate
</Dependencies>
</manifestEntries>
</archive>
</configuration>
</plugin>

然后使用提供的作用域添加其他所需的依赖项,以便可以在运行时加载它们而不用在战争中捆绑,使用以下示例。

<dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.0.1.Final</version>
        <scope>provided</scope>
    </dependency> 
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>4.2.0.Final</version>
        <scope>provided</scope>
    </dependency>
   <dependency>
        <groupId>org.hibernate.common</groupId>
        <artifactId>hibernate-commons-annotations</artifactId>
        <version>4.0.1.Final</version>
        <classifier>tests</classifier>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.0-api</artifactId>
        <version>1.0.1.Final</version>

    </dependency>
     <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-c3p0</artifactId>
        <version>4.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.0.1.Final</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.0.0.GA</version>
        <scope>provided</scope>
    </dependency>