Maven和依赖项不在存储库中

Maven和依赖项不在存储库中,maven,url,jar,download,Maven,Url,Jar,Download,我们有一个以jar形式在线提供的依赖关系第三方库,但它不在Maven存储库中,也不在任何其他存储库中 如何使用pom.xml根据URL自动检索此依赖关系 我们不想将其存储在我们的Git回购中,因为这是一件坏事 这里的想法是,当人们签出项目时,他们可以使用IDE Maven集成(或者只是mvn命令行工具)下载所有依赖项。因此,我们希望能够像Maven repo中的所有依赖一样,下载其他第三方依赖 基于搜索,我还没有找到答案——所有的解决方案似乎都是“先下载并创建本地回购协议”。显然,Maven可以

我们有一个以jar形式在线提供的依赖关系第三方库,但它不在Maven存储库中,也不在任何其他存储库中

如何使用pom.xml根据URL自动检索此依赖关系

我们不想将其存储在我们的Git回购中,因为这是一件坏事

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


基于搜索,我还没有找到答案——所有的解决方案似乎都是“先下载并创建本地回购协议”。显然,Maven可以从互联网下载,因为这就是它与Maven Central和其他回购协议的连接方式。所以我不明白为什么它不能下载以可识别格式显示包的任意URL。

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

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

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

跳过存储库管理器 如果您确实不想要或不能使用存储库管理器,您可以随时下载工件并使用以下工具手动安装:


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

您应该使用mvn install将其发布到您的本地.m2存储库或Nexus这样的中央存储库。假设我没有任何资源可用于安装这样的服务器。我已编辑了我的答案以提供轻量级的替代方案。谢谢,这是我怀疑的唯一方法。也许作为maven目标的一部分编写脚本会下载文件,然后作为依赖项安装它们。尽管如此,这意味着我们不能单独使用pom.xml来建立一个IDE项目。
mvn install:install-file -Dfile=your-artifact-1.0.jar -DgroupId=org.some.group -DartifactId=your-artifact -Dversion=1.0