我有几个使用Maven的项目,我想在我的工作网络上运行一个内部存储库。我有几个来自第三方的库,不能发布到野外,还有一些我们自己的库需要在网络中可用(包括我们的TeamCity CI服务器),但不能在网络外部署。经过一些研究,我发现了三个关于如何实现这一目标的主要建议:Archiva,Artifactory和Nexus。我已经尝试过各自,并且未能使用其中任何一个创建的内部存储库成功构建我的任何项目。
这让我相信我误解了某些事情或做错了什么。有没有人知道一个教程,它将引导我完成设置和内部Maven存储库并将其与我的项目集成?
答案 0 :(得分:13)
我只与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>
并在我的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>
为了超越这一点,学习曲线跳了很多,但我发现Sonatype的在线书籍相当不错。 Repository Management with Nexus用于了解您可以对存储库服务器执行的操作。我发现唯一棘手的问题是,有些信息仅适用于他们的商业软件,而且他们并没有太大的努力来宣传差异。
答案 1 :(得分:7)
像Archiva和Nexus这样的知识库管理员不仅仅是一个内部存储库。它们可以作为代理,避免与Maven中心或其他外部存储库联系。
对于内部存储库,您只需要一个具有Maven存储库结构的网络或HTTP可访问位置。然后你将它称为另一个repository in your settings file。
<repository>
<id>my-internal-repo</id>
<url>http://myrepo.mycompany.com/</url>
</repository>
在http://maven.apache.org/guides/introduction/introduction-to-repositories.html的Maven文档中查看更多内容。
答案 2 :(得分:4)
我建议使用Nexus evaluation guide附带的2.13(最新版本为Nexus Pro Installer),但对于简单的用例,也可以使用Nexus Open Source代理和部署组件。
这些示例也可以在github上找到,包括Maven,Ant / Ivy和Gradle的设置。一旦您查看了示例并阅读了指南,您就可以轻松地以相同的方式设置项目。
当然,如果有任何问题,您可以随时ask on the mailing list or chat with the developers on hipchat