Maven内部存储库,真的这么难吗?
我有几个项目使用Maven,我想在我的工作网络上运行一个内部存储库。我有几个来自第三方的库,不能发布到野外,还有一些我们自己的库,需要在网络内可用(包括我们的TeamCity CI服务器),但不能部署到网络外。经过一点研究,我发现了三个关于如何实现这一点的主要建议:Archiva、Artifactory和Nexus。我已经尝试了每一种方法,但使用它们创建的内部存储库成功构建了我的任何项目都失败了Maven内部存储库,真的这么难吗?,maven,nexus,artifactory,Maven,Nexus,Artifactory,我有几个项目使用Maven,我想在我的工作网络上运行一个内部存储库。我有几个来自第三方的库,不能发布到野外,还有一些我们自己的库,需要在网络内可用(包括我们的TeamCity CI服务器),但不能部署到网络外。经过一点研究,我发现了三个关于如何实现这一点的主要建议:Archiva、Artifactory和Nexus。我已经尝试了每一种方法,但使用它们创建的内部存储库成功构建了我的任何项目都失败了 这让我相信我误解了什么或做错了什么。有谁知道有一个教程可以指导我如何设置和内部Maven存储库,并将
这让我相信我误解了什么或做错了什么。有谁知道有一个教程可以指导我如何设置和内部Maven存储库,并将其与我的项目集成?我只使用过Nexus,但我发现它很容易安装:
http://myserver:8080/nexus
查看所有功能是否正常
对于表面设置,我将默认密码添加到我的settings.xml
:
<servers>
<server>
<id>my-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>my-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
我的快照
管理
管理员123
我的释放
管理
管理员123
在我的POM文件中:
<distributionManagement>
<snapshotRepository>
<id>my-snapshots</id>
<name>My internal repository</name>
<url>http://myserver:8080/nexus/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>my-releases</id>
<name>My internal repository</name>
<url>http://myserver:8080/nexus/content/repositories/releases</url>
</repository>
</distributionManagement>
我的快照
我的内部存储库
http://myserver:8080/nexus/content/repositories/snapshots
我的释放
我的内部存储库
http://myserver:8080/nexus/content/repositories/releases
除此之外,学习曲线上升了不少,但我发现Sonatype的在线书籍相当不错。是一个用于了解如何使用存储库服务器的工具。我发现唯一棘手的是,有些信息只适用于他们的商业软件,他们不会太努力地宣传差异。像Archiva和Nexus这样的存储库经理不仅仅是一个内部存储库。它们充当代理,避免接触Maven central或其他外部存储库 对于一个内部存储库,您只需要一个具有Maven存储库结构的网络或HTTP可访问位置。然后你把它称为另一个
我的内部回购
http://myrepo.mycompany.com/
查看Maven文档中的更多信息。我建议使用随附的(最新可用版本),但也适用于代理和部署组件的简单用例 这些示例也可在上获得,包括Maven、Ant/Ivy和Gradle的设置。一旦您阅读了示例并阅读了指南,您将能够以同样的方式轻松地设置项目
当然,如果有任何问题,您总是可以您已经尝试过哪些指南?您在这三个存储库中遇到了哪些问题/错误?既然您找到了其中的一个,那么查看比较矩阵可能是有意义的-这里还有其他人,他们在如何使用像共享DropBox文件夹这样简单的私有、共享的repo方面有共同的见解。也许有帮助。我建议不要使用war,而是使用包含Nexus和Jetty的安装程序(tar.gz或zip文件)。我很高兴你喜欢这本书顺便说一句。在区分pro和oss方面。。。那在网站上。我们不断地在oss和pro中添加更多的内容,并且这些内容会发生变化,所以这本书不会有太大的区别。@ManfredMoser如果你有一个页面解释使用安装程序的优缺点,那将非常有趣。我使用NexusOSS非常简单,我的经验是,战争升级更简单,需要的思考更少。不过,这是一个非常小的区别。使用捆绑包进行升级非常简单()。主要的优点是,我们一直使用捆绑包进行测试,pro在捆绑包上运行。所有商业安装都使用它,包括jboss、ossrh等。职业选手不支持这场战争,所以你只能靠自己了。您也可以从捆绑的jetty中获得更好的性能。我也遇到了同样的问题,并使用您的示例代码解决了这个问题。我再也找不到hosted eval guide,但这是源代码。您不应将repo服务器添加为存储库。这只会给你一点好处。将其设置为全球镜像要好得多。在这里看到更多@ManfredMoser我同意Nexus不仅仅是一个存储库。事实上,我甚至这么说!然而,最初的问题只是为了找到一种托管“内部”jar的方法。因此,我的回答是。也就是说,我尊重地不同意您的断言“您不应该将repo服务器添加为存储库”。这就是
存储库设置的基本目的。。您误解了使用settings.xml文件中的mirror部分的最佳做法。如果您在设置文件中添加了存储库,并且没有使用镜像部分,那么您对组件的所有请求仍将转到中央存储库和repo manager。这样会降低性能,并失去在Nexus中从Central缓存组件的好处。而repo服务器仍然是Maven的存储库。此外,您不能将大量其他存储库添加到您的公共组中,所有开发人员都将获得访问权限,而无需更改其设置文件。@ManfredMoser。我只是在反驳你最初评论中“不应该”的部分。是的,我在吹毛求疵。嘻哈是关键!我有一个组合的Mave
<repository>
<id>my-internal-repo</id>
<url>http://myrepo.mycompany.com/</url>
</repository>