使用Hibernate for Windows的Maven构建问题

时间:2010-04-23 12:04:51

标签: windows eclipse maven-2 dependencies

我正在为与Hibernate扩展相关的Maven启用的项目获取构建错误。 - 这是一个非常基本的应用程序,我能够通过手动安装一些必需的工件在我的Linux机器上解决这个问题:

mvn install:install-file -DgroupId=javassist -DartifactId=javassist 
-Dversion=3.9.0 -Dpackaging=jar -Dfile=foo.jar

结果很好(Hibernate作为一组必需的deps)。

但是在Windows的情况下,情况有所不同。如何在Windows上手动将依赖项添加到Maven?

    1) org.hibernate:hibernate:jar:3.3.2

      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.3.2 
-Dpackaging=jar -Dfile=/path/to/file

   2) javassist:javassist:jar:3.9.0

我可以在Windows机器上为我的同事自动执行这种繁琐的手动依赖安装吗?是否有任何有用的工具或GUI可以执行这些任务?最好的方法是Maven自动完成所有操作。我不太熟悉它。

感谢您的回答。

3 个答案:

答案 0 :(得分:1)

  1. 您可以在Windows计算机上使用mvn install:install-file来安装依赖项到本地存储库
  2. 您可能希望更改settings.xml以添加其他存储库镜像,因此您不仅仅依赖于中心。查看jboss,java.net等。您还可以设置自己的存储库管理器(如Nexus)来处理镜像,存储团队的工件等;然后只需将每个开发人员机器指向您的存储库。
  3. 有关详情,请参阅Repository Management with NexusReasons to use a Repository Manager

答案 1 :(得分:1)

首先,您可以手动将工件安装到Windows中的本地Maven存储库,其方式与在Linux机器上完全相同。

理想情况下,正如您所说,Maven将为您做出艰苦的努力。通常您不必手动安装jar:对于大多数库,Maven将知道每个jar具有哪些依赖项。默认情况下,Maven将检查the central repository和其他几个。要访问其他存储库中的jar,只需将它们添加到POM中,如下所示:

  <project>
      ...
      <repositories>
          <repository>
              <id>jboss.maven2.repo</id>
              <name>JBoss Maven Repo</name>
              <url>http://repository.jboss.com/maven2</url>
          </repository>
          <!-- other repositories here -->
      </repositories>
      ...
  </project>

上面提到的JBoss repo是一个很好的补充。它有很多常见的罐子,包括你上面提到的hibernate版本的罐子。像你这样在你的pom.xml中引用它:

<dependencies>
    <!-- ... -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>3.3.2.GA</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-annotations</artifactId>
        <version>3.4.0.GA</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-commons-annotations</artifactId>
        <version>3.3.0.ga</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>3.4.0.GA</version>
    </dependency>
</dependencies>

一旦添加了这些依赖项,Maven还将下载这些库所依赖的库,依此类推(包括示例中的Javassist库)。

最后,如另一个答案中所述,如果您为项目安装了许多第三方库(其他存储库中不存在),您可能需要安装像Nexus这样的存储库管理器{ {3}}或Artifactory,它允许您通过基于Web的界面执行您提到的安装命令。

答案 2 :(得分:1)

  

通过手动安装一些必需的工件(...)

,我能够在我的Linux机器上解决这个问题

手动安装工件是一种不好的做法(它会使您的构建在您遇到时不可移植),实际上,没有理由手动安装您正在寻找的工件,它们都可以在JBoss repository。因此,将其添加到“已声明”存储库列表中:

<project>
  ...
  <repositories>
    <repository>
      <id>repository.jboss.org</id>
      <name>Jboss Repository for Maven</name>
      <url>http://repository.jboss.org/maven2</url>
    </repository>
  </repositories>
  ...
</project>

然后声明以下依赖项:

<dependencies>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>3.3.2.GA</version>
  </dependency>
  <dependency>
    <groupId>javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.9.0.GA</version>
  </dependency>
</dependencies>

请注意,对hibernate-core的依赖关系(http://repository.jboss.org/maven2/org/hibernate/hibernate/3.3.2.GA/仅包含一个pom)。