Если вы запустите mvn dependency:tree
в simple-console , вы не увидите артефакт JTA:
[INFO] org.seamoo:simple-console:jar:1.0
[INFO] +- junit:junit:jar:3.8.1:test
[INFO] +- org.seamoo:simple-persist:jar:1.0:compile
[INFO] | +- org.seamoo:simple-model:jar:1.0:compile
[INFO] | +- org.hibernate:hibernate:jar:3.2.5.ga:compile
[INFO] | | +- net.sf.ehcache:ehcache:jar:1.2.3:compile
[INFO] | | +- asm:asm-attrs:jar:1.5.3:compile
[INFO] | | +- antlr:antlr:jar:2.7.6:compile
[INFO] | | +- cglib:cglib:jar:2.1_3:compile
[INFO] | | +- asm:asm:jar:1.5.3:compile
[INFO] | | \- commons-collections:commons-collections:jar:2.1.1:compile
[INFO] | +- org.hibernate:hibernate-annotations:jar:3.3.0.ga:compile
[INFO] | | \- javax.persistence:persistence-api:jar:1.0:compile
[INFO] | \- org.hibernate:hibernate-commons-annotations:jar:3.3.0.ga:compile
[INFO] +- org.seamoo:simple-weather:jar:1.0:compile
[INFO] | +- log4j:log4j:jar:1.2.14:compile
[INFO] | +- dom4j:dom4j:jar:1.6.1:compile
[INFO] | | \- xml-apis:xml-apis:jar:1.0.b2:compile
[INFO] | +- jaxen:jaxen:jar:1.1.1:compile
[INFO] | | +- jdom:jdom:jar:1.0:compile
[INFO] | | +- xerces:xercesImpl:jar:2.6.2:compile
[INFO] | | \- xom:xom:jar:1.0:compile
[INFO] | | +- xerces:xmlParserAPIs:jar:2.6.2:compile
[INFO] | | +- xalan:xalan:jar:2.6.0:compile
[INFO] | | \- com.ibm.icu:icu4j:jar:2.6.1:compile
[INFO] | \- velocity:velocity:jar:1.5:compile
[INFO] | +- commons-lang:commons-lang:jar:2.1:compile
[INFO] | \- oro:oro:jar:2.0.8:compile
[INFO] +- org.springframework:spring:jar:2.0.7:compile
[INFO] | \- commons-logging:commons-logging:jar:1.1:compile
[INFO] | +- logkit:logkit:jar:1.0.1:compile
[INFO] | +- avalon-framework:avalon-framework:jar:4.1.3:compile
[INFO] | \- javax.servlet:servlet-api:jar:2.3:compile
[INFO] \- hsqldb:hsqldb:jar:1.8.0.7:compile
И действительно, если вы посмотрите на simple-persist/pom.xml
, вы увидите, что оно было исключено:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.5.ga</version>
<exclusions>
<exclusion>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
</exclusion>
</exclusions>
</dependency>
Я предполагаю, что артефакт jta исключен, потому что полный jibernate jar (hibernate-3.2.5.ga.jar
здесь) зависит от jta-1.0.1B.jar
, который NOT доступен в центральном репо из-за проблем с лицензированием во время ядра hibernate ( то есть hibernate-core-3.3.0.GA.jar
) зависит от jta-1.1.jar
, который доступен из центра.
Причина, по которой он работает в Eclipse, заключается в том, что simple-model зависит от hibernate-annotations-3.3.0.ga.jar
, который зависит от hibernate-3.2.1.GA.jar
, который зависит от jta-1.0.1B.jar
(что, скорее всего, имеется в вашем локальном хранилище) , Итак, поскольку в этом проекте целые зависимости спящего режима представляют собой большую неразбериху, поскольку существуют проблемы сходимости больших зависимостей, Eclipse «видит» JTA-банку (это просто удачный или неудачный побочный эффект). Но Maven нет.
Чтобы решить эту проблему, удалите исключение JTA в simple-persist/pom.xml
(это быстрое и очень грязное исправление) или исправьте зависимости гибернации, чтобы они сходились (это было бы правильным исправлением):
- используйте
hibernate-core-3.3.0.SP1.jar
везде, где требуется
- используйте
hibernate-annotations-3.4.0.GA.jar
(зависит от первого) везде, где требуется