2010-04-29 52 views
5

的新版本Hibernate3中,Maven的插件依赖我想用hibernate-3.5-1.Final与此插件一起,应该是什么我这里的依赖。它似乎正在拾取一组较旧的罐子,现在正在失败。为休眠

  <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>hibernate3-maven-plugin</artifactId> 
       <version>2.2</version> 
      </plugin> 

EDIT1:

[INFO] class org.hibernate.cfg.ExtendedMappings has interface org.hibernate 
.cfg.Mappings as super class 
[INFO] -------------------------------------------------------------------- 
---- 
[INFO] Trace 
java.lang.IncompatibleClassChangeError: class org.hibernate.cfg.ExtendedMap 
pings has interface org.hibernate.cfg.Mappings as super class 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:621) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.ja 
va:124) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) 
     at java.net.URLClassLoader.access$000(URLClassLoader.java:56) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:195) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
     at org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmC 
lassLoader.java:195) 
     at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClas 
sRealm.java:255) 
     at org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLo 
ader.java:214) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 
     at org.hibernate.cfg.AnnotationConfiguration.createExtendedMappings 
(AnnotationConfiguration.java:187) 
     at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(Anno 
tationConfiguration.java:277) 
     at org.hibernate.cfg.Configuration.buildMappings(Configuration.java 
:1206) 
     at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configurat 
ion.java:1226) 
     at org.hibernate.ejb.EventListenerConfigurator.configure(EventListe 
nerConfigurator.java:173) 
     at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration. 
java:854) 
     at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration. 
java:191) 
     at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration. 
java:253) 

回答

4

我能得到这个工作与下面的一组相关性(即3.5.1决赛所有休眠罐)

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

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

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

        <dependency> 
         <groupId>org.hibernate</groupId> 
         <artifactId>ejb3-persistence</artifactId> 
         <version>3.3.2.Beta1</version> 
        </dependency> 

        <dependency> 
         <groupId>org.hibernate</groupId> 
         <artifactId>hibernate-tools</artifactId> 
         <version>${hibernate-tools.version}</version> 
        </dependency> 
       </dependencies> 
+0

很高兴它的工作,但我仍然不明白你做了什么,以及你声明这些依赖关系(在插件内?)。顺便说一句,你应该从理论上不申报休眠核心和休眠的注解,休眠,EntityManager的拉他们传递性。而且我不认为EJB3持久性需要JPA 2.0。 – 2010-04-30 04:06:46

+0

我添加了这些依赖关系Hibernate3的,Maven的插件。如果没有最新版本的ejb3-persistence,它将无法工作。 – Sam 2010-05-03 17:44:50

+0

这也适用于我。我也能够省去hibernate-tools JAR的'',因为我找不到它的更新版本,旧的hibernate-tools版本似乎可以很好地适用于新的hibernate-core和ejb3-persistence文物。 – 2011-04-28 00:08:07

2

很难说究竟是什么发生的事情,但事实是,2.2版。的hibernate3-maven-plugin声明休眠核心3.3.1.GA休眠工具3.2.3.GA作为依赖,并针对这些版本的编译。你有没有尝试更换它们?如果是的话,我不认为你可以(尤其是因为他们似乎将非兼容的改变)。这样说,这不应该阻止你在项目中声明hibernate-entitymanager-3.5.1-Final作为依赖项,并让插件使用其他版本(这应该是默认行为)。

+0

感谢我这方面的工作了昨天与我所提到的依赖关系。它需要所有的上述依赖关系,而不仅仅是核心jar – Sam 2010-04-30 03:53:54

1

我有一个类似的问题。

运行 “命令mvn依赖:树” 后,我看到unitils-的DbUnit:3.1依赖于旧的hibernate.jar ...

[INFO] +- org.unitils:unitils-dbunit:jar:3.1:test 
[INFO] | +- org.unitils:unitils-core:jar:3.1:test 
[INFO] | | +- commons-logging:commons-logging:jar:1.1:test 
[INFO] | | +- commons-lang:commons-lang:jar:2.5:test (version managed from 2.3) 
[INFO] | | \- ognl:ognl:jar:2.6.9:test 
[INFO] | +- org.unitils:unitils-database:jar:3.1:test 
[INFO] | | +- org.unitils:unitils-dbmaintainer:jar:3.1:test 
[INFO] | | | \- org.hibernate:hibernate:jar:3.2.5.ga:test 

移动的Hibernate库以前的unitils依赖性解决问题。订单很重要。

祝你好运, J.

1

对于休眠3.6.0.Final我设置如下插件:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>hibernate3-maven-plugin</artifactId> 
    <version>2.2</version> 
    <dependencies> 
     <dependency> 
      <groupId>xerces</groupId> 
      <artifactId>xercesImpl</artifactId> 
      <version>2.9.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>3.6.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>3.6.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
      <version>4.1.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>com.microsoft</groupId> 
      <artifactId>sqljdbc4</artifactId> 
      <version>3.0.1301</version> 
     </dependency> 
    </dependencies> 
</plugin>