因此我工作的公司在我们的构建服务器上有防火墙,这意味着他们只能访问我们的内部Archiva maven服务器。据我所知,该服务器也是防火墙,也无法直接从maven中心检索内容。
所以如果人们需要某个库,他们会做什么,他们从maven中心获取pom.xml,jar和其他依赖项,并通过Web界面将它们上传到我们的Archiva服务器。
这对于最多只有一个或两个依赖项的相对较小的库来说已经足够了,但是对于像我现在需要的Eclipse Aether这样的大型库来说非常繁琐。
所以我的问题是,有没有办法将所有内容从maven central下拉到我的本地机器,然后将其推回到我公司的Archiva服务器?
对不起,如果这是一个相当愚蠢的问题;我不太熟悉将内容上传到Maven,我的同事根本没有理解我所谈论的内容(很多人喜欢将jar直接交给我们的回购叹息)。 / p>
谢谢!
答案 0 :(得分:1)
对不起,这不是一个真正的答案,但它也不适合评论:)
简短:与防火墙人员交谈。捣乱并花费数小时和数天来解决它是没有意义的。你迟早会得到一份maven central副本。这也是他们可能不想要的东西。
通常不允许开发人员连接到maven central。但那有点偏执。即使那些通过jar复制jar的公司也无法验证他们手动复制的jar不包含原子弹。
有一些选择:
使用依赖关系:离线目标:http://maven.apache.org/plugins/maven-dependency-plugin/go-offline-mojo.html
这将下载所有依赖项和插件。同时执行构建的目标。结果是您在本地存储库中拥有所需的工件。 我不知道什么是archiva可以做的。可能导入了文件夹结构。似乎有不同的存储格式(文件,jackrabbit,cassandra)的存储库。也许文件是一个选项。 Sonatype Nexus存储库propxy将所有内容存储在文件中。因此,您只需将其本地存储库复制到其中一个托管存储库中,刷新缓存即可。 (或者把一个关系放在一边,然后像那样反映它)
无论哪种方式,您都需要访问maven central。通常人们似乎在家里这样做并带上USB棒......这没有任何意义。
与防火墙人员交谈,让archiva能够与maven中心,也许是ibiblio和jboss repos合作。这将节省大量时间。
如果他们担心安全问题,我看过没有人真正审查过项目中的所有代码。不要自欺欺人。通过导致大量工作的限制来伪造安全性不会带来更多安全性。如果扫描程序没有检测到存储库代理中的任何内容,则可能没有任何内容。
nexus pro版本(有点costy)包含某种分析功能,以查看使用过的jar中是否存在已知的安全问题。如果这让人们平静下来。价格标签可能会让他们重新开始。
这是我的建议:每个开发人员只允许连接到你的archiva(mirrorOf = *) - 作为对策略/限制的某种协议。允许archiva服务器连接到世界(仅中央,jboss-repo,ibiblio)。通过这种方式,您可以完全控制正在发生的事情,开发人员可以随意移动。如果他们向错误的方向移动,您会注意到在审核中(包含依赖关系)或通过maven代理上的活动。
早些时候可以使用rsync镜像maven中心。但是我几年前就不再考虑它了。这只是浪费时间。
不要低估将依赖项添加到代理所需的时间。这是一个简单的任务 - 是的 - 但它非常耗时。如果防火墙的人想要为此付出代价:就这样吧。但是不要弄错数字:你需要有人添加文件,而当发生这种情况时,其他人会等待他。窗外的钱。因此人们会编写将依赖项复制到本地存储库的脚本。这意味着:无法控制正在发生的事情。这也是存储库代理的原因之一。
可以使用Maven Central。
我希望你能找到一个合理的解决方案:)