2010-04-29 73 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>