Maven和依赖项不在存储库中

时间:2017-06-20 20:58:28

标签: maven url jar download

我们有一个依赖的第三方库,可以在jar形式在线获得,但它在Maven存储库中,或者已知在任何其他存储库中。

我们如何使用pom.xml根据URL自动检索此依赖项?

我们不想将它存储在我们的Git仓库中,因为这是一件坏事。

这里的想法是,当人们签出项目时,他们可以使用他们的IDE Maven集成(或者只是mvn命令行工具)来下载所有依赖项。所以我们希望能够像Maven回购中的所有内容一样下载其他第三方依赖。

我无法根据搜索得出答案 - 所有解决方案似乎都是“首先下载并创建本地回购”。显然Maven可以从互联网上下载,因为它是如何连接到Maven Central和其他回购。所以我不明白为什么它不能下载以可识别格式呈现包的任意URL。

1 个答案:

答案 0 :(得分:2)

从长远来看,最好的解决方案是使用自己的工件库,如Nexus,Artifactory或Archiva。 所有这些都有一个手动上传功能,您可以使用它来设置groupId,artifactId和版本,这样您就可以照常引用工件。 如果你想要真正的低技术,我想你可以把一些机器的本地存储库放在Apache后面,只要你授予读/写访问权限。

然后,您需要在Maven settings.xml文件中添加新存储库,如here所述。

Maven使用坐标来导航存储库(具有特定布局)并使用存储库的特定位置中的元数据文件验证工件校验和是否存在损坏/篡改。 AFAIK类似于其他包管理系统,如APT和RubyGems,它们使用repo清单并且不允许任意URL下载。

跳过存储库管理器

如果您确实不想或不能使用存储库管理器,您可以随时下载工件并使用the Maven Install Plugin手动安装它:

mvn install:install-file -Dfile=your-artifact-1.0.jar -DgroupId=org.some.group -DartifactId=your-artifact -Dversion=1.0

但是,每次需要更改工件时,您都必须在运行构建的每台计算机上执行此操作。