我正在为与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自动完成所有操作。我不太熟悉它。
感谢您的回答。
答案 0 :(得分:1)
mvn install:install-file
来安装依赖项到本地存储库settings.xml
以添加其他存储库镜像,因此您不仅仅依赖于中心。查看jboss,java.net等。您还可以设置自己的存储库管理器(如Nexus)来处理镜像,存储团队的工件等;然后只需将每个开发人员机器指向您的存储库。 有关详情,请参阅Repository Management with Nexus和Reasons 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)。