将 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 模块)。因此,您确实可以通过指定&lt;type&gt;pom&lt;/type&gt; 来依赖它。但我会亲自声明对所需模块的依赖,例如对于 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 构建的主要内容,如果未能解决你的问题,请参考以下文章

ffmpeg——压缩mav格式音频

如何以编程方式将“@Cascade”添加到 POJO 字段(Spring mvc + Hibernate)

休眠。如何将条目添加到具有来自 Hibernate 中 2 个不同表的 2 个外键的表中?

Spring JPA + Hibernate 将 Where 条件添加到我的整个模型中

Hibernate:将现有子实体添加到具有 OneToMany 双向关系的新实体并将其持久化(“分离的实体传递给持久化”)

spring4整合hibernate5.1