代码之家  ›  专栏  ›  技术社区  ›  Starkey

休眠项目和与Maven一起构建

  •  7
  • Starkey  · 技术社区  · 15 年前

    我正在尝试建立一个相对简单的项目,包括与Maven的Hibernate。我正在尝试使用 最新的 休眠版本(3.5.4最终版本)。

    似乎JBoss的人最近改变了他们的Maven存储库,我在让我的Maven构建工作上遇到了一些问题。我在网上和这里发现了很多信息,但似乎没有什么能很好地工作…我发现的很多信息不允许我获取最新版本的Hibernate。

    我在pom.xml中定义了以下存储库:

    <repository>
        <id>jboss-public-repository-group</id>
        <name>JBoss Public Repository Group</name>
        <url>https://repository.jboss.org/nexus/content/repositories/releases</url>
    </repository>
    

    我在pom.xml中定义了以下依赖项:

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate</artifactId>
        <version>3.5.4-Final</version>
    </dependency>
    

    这似乎下载了一些依赖项,但还不足以构建。

    我得到以下错误:

    Downloading: http://repo1.maven.org/maven2/org/hibernate/hibernate/3.5.4-Final/hibernate-3.5.4-Final.jar
    [INFO] Unable to find resource 'org.hibernate:hibernate:jar:3.5.4-Final' in repository central (http://repo1.maven.org/maven2)
    

    我读过JBoss说要读的那一页 Maven Getting Started - Users 老实说,这对我来说毫无意义。它说把东西放在我的settings.xml中。我想把信息放在pom.xml中,而不是要求每个人都修改settings.xml。我可不是特立独行的专家。我只是想知道在pom.xml文件中放些什么来让它正常工作。

    3 回复  |  直到 14 年前
        1
  •  17
  •   Sean Patrick Floyd    15 年前

    问题是这种依赖性

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate</artifactId>
        <version>3.5.4-Final</version>
        <!-- <type>jar</type> is implied here -->
    </dependency>
    

    只是一个pom,当你试图引用它作为一个jar时。所以要引用它,您必须这样做:

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate</artifactId>
        <version>3.5.4-Final</version>
        <type>pom</type>
    </dependency>
    

    这将获取这个pom的可传递依赖项,而不是工件本身。 然而,POM only lists modules 不是依赖项,因为它是用于休眠的根POM。这对你没有帮助,别管它了。

    所以你真正想要的是

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>3.5.4-Final</version>
    </dependency>
    

    (经典冬眠)或

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>3.5.4-Final</version>
    </dependency>
    

    (对于JPA2提供商)

        2
  •  4
  •   Starkey    15 年前

    我找到了答案…

    这会得到你需要的东西。从上面引用的页面,将以下内容添加到pom.xml中:

    <repositories>
        <repository>
            <id>jboss-public-repository-group</id>
            <name>JBoss Public Maven Repository Group</name>
            <url>https://repository.jboss.org/nexus/content/groups/public/</url>
            <layout>default</layout>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>jboss-public-repository-group</id>
            <name>JBoss Public Maven Repository Group</name>
            <url>https://repository.jboss.org/nexus/content/groups/public/</url>
            <layout>default</layout>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
    

    以下是您需要的依赖关系:

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>3.5.4-Final</version>
        </dependency>
    
        3
  •  1
  •   Robert Munteanu    14 年前

    jboss已经开始将自己的repo与maven central同步,如发布在jboss community blog上的 pom.xml 或repository manager.

    search result for hibernate core :

    要将Hibernate Core 3.6.3添加到项目中,只需将以下代码片段添加到POM中即可:

    依赖关系 <groupid>组织。休眠</groupid> <artifactid>休眠核心</artifactid> <version>3.6.3.最终版</version> </dependency> < /代码>
    因此 hibernate 现在可以使用构件,无需将JBoss存储库添加到 pom.xml 或存储库管理器。

    休眠核心的搜索结果 :

    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>