将 Hibernate 3.5.x 添加到 maven pom.xml 构建
Posted
技术标签:
【中文标题】将 Hibernate 3.5.x 添加到 maven pom.xml 构建【英文标题】:Adding Hibernate 3.5.x to a maven pom.xml build 【发布时间】:2011-03-02 09:57:55 【问题描述】:我像这样将 JBoss Maven 存储库添加到我的 pom.xml 文件中......
<repositories>
<repository>
<id>jboss</id>
<url>http://repository.jboss.org/maven2/</url>
</repository>
</repositories>
我这样添加了 Hibernate 本身...
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.5.1-Final</version>
</dependency>
但是当我尝试构建我的应用程序时,我看到了这个错误......
Downloading: http://repository.jboss.org/maven2//org/hibernate/hibernate/3.5.1-Final/hibernate-3.5.1-Final.jar
[INFO] Unable to find resource 'org.hibernate:hibernate:jar:3.5.1-Final' in repository jboss (http://repository.jboss.org/maven2/)
Downloading: http://repo1.maven.org/maven2/org/hibernate/hibernate/3.5.1-Final/hibernate-3.5.1-Final.jar
[INFO] Unable to find resource 'org.hibernate:hibernate:jar:3.5.1-Final' in repository central (http://repo1.maven.org/maven2)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
Missing:
----------
1) org.hibernate:hibernate:jar:3.5.1-Final
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=org.hibernate -DartifactId=hibernate -Dversion=3.5.1-Final -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 -Dversion=3.5.1-Final -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
Path to dependency:
1) stakeholdersupdate:stakeholdersupdate:war:1.0
2) org.hibernate:hibernate:jar:3.5.1-Final
----------
1 required artifact is missing.
【问题讨论】:
请注意,所有未来的 JBoss 工件都不会在旧存储库中可用。 JBoss 正在迁移到new maven repository infrastructure。 【参考方案1】:正如seanizer 提到的,org.hibernate:hibernate:pom:3.5.1-Final
工件是 pom
类型的聚合模块(它聚合了 Hibernate Core 模块)。因此,您确实可以通过指定<type>pom</type>
来依赖它。但我会亲自声明对所需模块的依赖,例如对于 Hibernate Entity Manager:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.5.1-Final</version>
</dependency>
或者对于 Hibernate Core:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.5.1-Final</version>
</dependency>
【讨论】:
那当然是对的。我刚刚回答了这个问题,而为隐含的更好问题提供答案本来是要走的路:-) @BalusC:我截图了! >:)【参考方案2】:hibernate 工件是 pom 类型的(意味着它只是其他项目的包装器)。这样做:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.5.1-Final</version>
<type>pom</type>
</dependency>
(如果省略类型,maven 将尝试将工件解析为 jar,在这种情况下不存在)
【讨论】:
【参考方案3】:这就是我设法将 Hibernate 和 JPA 2 添加到我的项目中的方法
. . .
<repositories>
<repository>
<id>JBoss</id>
<name>The "public-jboss" repository group provides a combined view all JBoss community project artifacts</name>
<layout>default</layout>
<url>http://repository.jboss.org/nexus/content/groups/public-jboss</url>
</repository>
</repositories>
<dependencies>
. . .
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.5.5-Final</version>
</dependency>
. . .
</dependencies>
. . .
【讨论】:
以上是关于将 Hibernate 3.5.x 添加到 maven pom.xml 构建的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式将“@Cascade”添加到 POJO 字段(Spring mvc + Hibernate)
休眠。如何将条目添加到具有来自 Hibernate 中 2 个不同表的 2 个外键的表中?
Spring JPA + Hibernate 将 Where 条件添加到我的整个模型中
Hibernate:将现有子实体添加到具有 OneToMany 双向关系的新实体并将其持久化(“分离的实体传递给持久化”)