我想要做的是强制Maven为我本地存储库中的每个工件下载'maven-metadata.xml'。
默认的Maven行为是仅从远程存储库下载元数据(请参阅this question)。
为什么我要这样做:
目前,我在构建计算机中运行了一个远程存储库。通过远程存储库,我指的是位于构建计算机中的目录,其中包含构建我的Maven项目所需的所有依赖项。请注意,我没有使用像Nexus这样的存储库管理器,存储库只是我上传到构建机器的本地存储库的副本。
但是,由于我的本地存储库不包含“maven-metadata.xml”文件,因此构建计算机存储库中也缺少这些元数据文件。如果我可以从中央存储库中检索元数据文件,那么就可以将一个有效的远程存储库上传到我的构建机器。
答案 0 :(得分:8)
您不希望从公共存储库获取元数据,它将包含给定工件的所有可用版本,而您的存储库将包含某些版本的子集。
值得指出的是,使用存储库管理器确实会更好。以下步骤允许您生成一次工件元数据。但是,如果您的需求发生变化,您将不得不重复此过程或手动更新文件,那么为什么不使用经理呢? Nexus可以独立运行,占用空间非常小。
即使您不打算将Nexus用于存储库管理器,您仍然可以使用它来生成元数据。
稍后您应该为所有工件生成元数据。然后,您可以将它们复制到您需要的位置并卸载Nexus。
答案 1 :(得分:4)
默认存储库在super pom.xml中定义,默认情况下所有poms都继承。
如果在本地你的意思是你只想使用〜/ .m2 / repos / *然后在离线模式下工作。将<offline>true</offline>
添加到您的settings.xml
如果在本地你的意思是你的本地服务器,你可以安装像Nexus这样的存储库管理器,修改你的设置文件,在这样的“镜像”下使用nexus:
<mirror>
<id>central-proxy</id>
<mirrorOf>central</mirrorOf>
<url>my/local/nexus/server</url>
</mirror>
并禁用Nexus中不需要的远程存储库。
答案 2 :(得分:1)
我发现有一件事是有人正在初步搜索jarvana并将其放在pom中,导致出现元数据错误消息。这......
<!-- <repository>
<id>jarvana</id>
<url>http://www.jarvana.com/jarvana/browse/</url>
</repository> -->
..修好了,错误就消失了。
答案 3 :(得分:0)
存储库管理器很棒,但我不想安装并在我的笔记本电脑上运行它。我只是想节省资源。 所以,我的解决方案如下:
现在我的存储库已脱机,包含完整内容(二进制文件,源代码,xml,md5,sha1)