Maven内部存储库,真的这么难吗?

Maven内部存储库,真的这么难吗?,maven,nexus,artifactory,Maven,Nexus,Artifactory,我有几个项目使用Maven,我想在我的工作网络上运行一个内部存储库。我有几个来自第三方的库,不能发布到野外,还有一些我们自己的库,需要在网络内可用(包括我们的TeamCity CI服务器),但不能部署到网络外。经过一点研究,我发现了三个关于如何实现这一点的主要建议:Archiva、Artifactory和Nexus。我已经尝试了每一种方法,但使用它们创建的内部存储库成功构建了我的任何项目都失败了 这让我相信我误解了什么或做错了什么。有谁知道有一个教程可以指导我如何设置和内部Maven存储库,并将

我有几个项目使用Maven,我想在我的工作网络上运行一个内部存储库。我有几个来自第三方的库,不能发布到野外,还有一些我们自己的库,需要在网络内可用(包括我们的TeamCity CI服务器),但不能部署到网络外。经过一点研究,我发现了三个关于如何实现这一点的主要建议:Archiva、Artifactory和Nexus。我已经尝试了每一种方法,但使用它们创建的内部存储库成功构建了我的任何项目都失败了


这让我相信我误解了什么或做错了什么。有谁知道有一个教程可以指导我如何设置和内部Maven存储库,并将其与我的项目集成?

我只使用过Nexus,但我发现它很容易安装:

  • 转到下载OSS版本
  • 获取“战争”分布
  • 通过Web应用程序管理器在我的Tomcat安装中安装servlet
  • 此时,我可以访问
    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>