我无法通过Maven依赖获取最新版本的Hibernate。看来我可以从Maven中央存储库获取的最新版本是3.2.6.GA,我对使用3.3.2.GA感兴趣,这是hibernate.org网站上显示的最新版本。当我在项目的pom.xml中将我的hibernate依赖项修改为最新版本时,运行Maven构建时出现以下错误:
Missing:
----------
1) org.hibernate:hibernate:jar:3.3.2.GA
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=org.hibernate -DartifactId=hibernate -D
version=3.3.2.GA -Dpackaging=jar -Dfile=/path/to/file
Alternatively, if you host your own repository you can deploy the file there:
mvn deploy:deploy-file -DgroupId=org.hibernate -DartifactId=hibernate -Dve
rsion=3.3.2.GA -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[
id]
一旦我这样做,我继续得到错误,表明我需要添加一个javassist依赖项,然后我需要更新我的hibernate-validator依赖项,这也需要在本地安装,然后我停下来环顾四周看看是否有更好的方法,可能将Maven指向JBoss / Hibernate存储库等等。与我使用的其他重要的开放源代码包(如Spring或JUnit)相比,这真的很令人头疼 - 当有新版本时我发布的所有内容都是更新依赖元素中的版本号,它才能正常工作。
我尝试将以下存储库声明添加到我的pom.xml中,但没有任何乐趣:
<repositories>
<repository>
<id>jboss</id>
<url>http://repository.jboss.org/maven2</url>
</repository>
</repositories>
我搜索了Google并没有找到太多帮助。有人可以提出最直接的方式来使用最新版本的hibernate或hibernate-core(3.3.2.GA),hibernate-validator(3.1.0)和hibernate-annotations(3.4.0)?
答案 0 :(得分:36)
JBoss已经开始将自己的repo与Maven central同步为posted on the JBoss community blog,因此hibernate
工件现在可用,而无需将JBoss存储库添加到pom.xml
或存储库管理器。 / p>
Search result for hibernate-core:
要将Hibernate Core 3.6.3添加到您的项目中,只需将以下代码段添加到您的pom中:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.6.3.Final</version>
</dependency>
答案 1 :(得分:16)
你遇到问题因为org.hibernate:hibernate:3.3.2.GA是一个聚合器POM,用于构建其余的模块,它实际上不是一个jar。它看起来像是在3.2.7之后发生的重构,这让人们失望了。作为参考,这个blog entry暗示了他们已经将Hibernate推广到中心的问题并且可以解释这种变化。
如果查看JBoss repository,您会看到3.3.2.GA 的hibernate模块是托管的,它们只是作为单独的工件托管,hibernate-core ,hibernate-ehcache等。所以你的存储库声明是正确的,你只需要微调依赖声明来考虑更改。
JBoss存储库托管hibernate-annotations-3.4.0.GA,hibernate-validator-3.1.0.GA和hibernate-core-3.3.2.GA等。尝试将特定工件添加到POM中,并使用已经声明的JBoss存储库。
还有一个hibernate-dependencies pom,它为大多数hibernate工件(包括核心)提供传递依赖。所以最简单的方法是用 hibernate-dependencies 替换现有的 hibernate 依赖声明
你的依赖关系会像这样结束......
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-dependencies <!--or hibernate-core--></artifactId>
<version>3.3.2.GA</version>
<type>pom</type>
<!--hibernate-dependencies is a pom, not needed for hibernate-core-->
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.4.0.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>3.1.0.GA</version>
</dependency>
...
<!--any other hibernate deps not inherited transitively-->
为了让您的生活更简单,您可以在项目中定义所有这些hibernate依赖项,例如调用(hibernate-all),然后为所有使用hibernate的项目引用该单个项目(当然,如果hibernte团队提供的话,这将是很好的无论如何,这个项目。)
答案 2 :(得分:4)
这令人沮丧,但新版本并不存在,而且已经很久没有了。具有讽刺意味的是,Hibernate工件具有一些相当复杂的相互依赖关系以及那些依赖关系的详细记录的最低版本,这些最佳版本将理想地表示为Maven POM。相反,我们必须自己下载二进制文件并尝试在本地表达它们。
答案 3 :(得分:2)
您可以在pom.xml中使用dependance
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.6.ga</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.3.1.GA</version>
</dependency>
答案 4 :(得分:1)
这个问题已经过时很久了: 所有Hibernate版本都可以在Maven中心使用多年。
请访问www.hibernate.org以获取最新的Maven坐标(不要相信IDE的建议)。
答案 5 :(得分:0)
存储库中缺少jar,也许这就是最新hibernate版本不在主要存储库中的原因
答案 6 :(得分:0)
对此有所了解并玩弄它。我没有完整的解决方案但是:
似乎我能够通过包含http://repository.jboss.com/maven3/而不是maven 2来解决一些依赖关系。
对于那些仍然存在问题的人,可以从maven网站下载丢失的文件,例如,浏览:
http://repo1.maven.org/maven2/org/hibernate/hibernate-core/3.6.8.Final/
(是的,我尝试将此路径和其他合理路径设置为存储库源,但没有成功......)
将此jar安装到您的maven构建中,执行以下操作:
mvn install:install-file -Dfile=path/to/jar/hibernate-core-3.6.8.Final.jar -DgroupId=org.hibernate -DartifactId=hibernate-core -Dversion=3.6.8-Final -Dpackaging=jar
参考:http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html
抱歉,刚刚意识到其中一些是多余的,但希望有些人能够看到其他可能的URL。 - JB