2010-04-23 13 views
0

我正在为与Maven启用的Hibernate扩展相关的项目收到构建错误。 - 这是一个非常基本的应用程序,我可以通过手动安装一些必要的器物来解决我的Linux机器这个问题:用于Windows的Hibernate的Maven构建问题

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自动完成这一切。我不太熟悉它。

感谢您的回答。

回答

1

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

理想情况下,正如你所说,Maven会为你做好辛苦的工作。通常你不必手动安装jar:对于大多数的库,Maven会知道每个jar有什么依赖关系。默认情况下,Maven将检查the central repository和其他几个。要访问罐子在其他存储库,只需将它们添加到您的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的回购协议是一个很好的补充。它有很多常见的罐子,包括上面提到的休眠版本的罐子。引用它在你的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库)。

最后,在另一个答复中提到,如果你有很多的第三方库的安装为您的项目没有在其他存储库中存在,您可能需要安装一个仓库管理器一样NexusArtifactory,或Archiva ,这将允许您通过基于Web的界面执行您提到的安装命令。

+0

这不是hibernate的正确依赖(这里提到的只是一个pom)。 – 2010-04-23 16:51:05

+0

好点:):更新。新版本已经过测试。感谢您的更正 – Daniel 2010-04-24 02:22:25

1
  1. 您可以使用mvn install:install-file你的Windows机器上安装的依赖到本地资源库以及
  2. 你可能想改变你的settings.xml添加额外的存储库中的镜子,这样你就不会依靠只是中央。查看jboss,java.net等。您还可以设置您自己的存储库管理器(如Nexus)来处理镜像,存储团队的工件等;然后将每个开发人员机器指向您的存储库。

有关更多信息,请参阅Repository Management with NexusReasons to use a Repository Manager

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-corehttp://repository.jboss.org/maven2/org/hibernate/hibernate/3.3.2.GA/仅包含POM)。