【问题标题】:Apache Ivy: Where do I put all these JARs?Apache Ivy:我将所有这些 JAR 放在哪里?
【发布时间】:2011-11-13 19:35:18
【问题描述】:

我正试图说服我工作场所的高层迁移到 Apache Ivy。我已经设法让几个沙盒项目使用 Ivy 为构建提供动力,现在我获得了制定迁移建议的许可。

我们都同意一件事:我们不想信任位于公共目录中的 JAR!我知道,我知道,有点偏执,是的。但是我们希望有一个设置,我们从受信任的源中提取 JAR(从开源项目本身下载它,或者很可能是 gulp,一个公共 repo),并在我们之前使用它一段时间“certify”它(把我们的祝福作为一个安全的神器使用)。

然后我们希望为我们的许多项目使用的所有 JAR 提供一个公共存储库。

我最初的想法是将此存储库置于版本控制中(我们有一个 SVN 服务器)。但我不确定最佳实践规定了什么。将我们的 JAR 放在文件服务器上并在 Ivy 脚本中通过 FTP 传送到它们可能更有意义。

无论是 SVN (HTTPS) 还是 FTP,我们所有的服务器都经过身份验证。所以,几个问题:

  1. 我们应该在哪里发布我们所有的“认证”JAR(从 `log4j` 到我们生产的任何本土 JAR)?最佳做法规定了什么?
  2. “ivyrep”解析器类型不采用用户名或密码属性。如果我们的“JAR 服务器”(FTP、SVN 等)通过了身份验证,如何配置 Ivy 脚本以登录?

【问题讨论】:

    标签: apache ant maven ivy


    【解决方案1】:

    为什么不使用像 Sonatype 的 Nexus 这样的东西。我已经看到它用于 Maven,我相信它适用于 Ivy。

    您可以将其设置为从远程存储库下载到(例如)“测试”存储库。然后,您可以评估这些 .jar,如果它们很好,请将它们上传到“已批准”存储库以供一般使用。对此有一些身份验证,但您必须更深入地评估它。当然,您可以通过用户名/密码对限制上传到存储库。

    【讨论】:

    • 谢谢@Brian - 我很欣赏这个建议,但因为我试图让这个获得批准,所以存储库需要成为内部服务器。获得批准使用一种新工具(Ivy)已经够难的了,更不用说两种新工具(Sonatype)了。不用担心我们的内部审批流程……只是好奇 JAR 通常会去哪里……SCM 服务器、文件服务器等。以及如何对这些服务器进行身份验证。谢谢!
    • Nexus 您可以在内部运行的服务器。它是围绕服务工件(罐子、耳朵、战争等)构建的。 SCM 并不擅长对二进制文件进行版本控制(至少不如非二进制文件有效),所以这就是拥有 Nexus 之类的东西(它也与 Archiva 或 Artifactory 非常相似——其中任何一个都可以工作)满足您的需求)。
    • 如果您不想通过引入其他工具来增加运气,您可以将 Apache Web 服务器作为您的存储库。这就是我为草根沙盒计划所做的。不久,Ivy 正式成为官方网站,我们移至 Artifactory 作为我们的存储库服务器。
    【解决方案2】:

    我必须赞同 Brian 的建议,即使用像 Nexus 这样的存储库管理器。从长远来看,工作量要少得多。您还会发现 Nexus 的专业版使您能够围绕您计划在构建中使用的存储库创建审批流程。请参阅procurement suite 功能。

    另一方面,如果您决心构建自己的存储库,那么 ivy 拥有完成这项工作的工具。您需要非常熟悉 ivy settings 文件以及它如何声明和使用 resolvers

    如果存储库可以通过 HTTPS 访问,url 解析器应该能够访问它。解析器将假定工件的每个版本位于不同的目录中,您需要指定 ivy 在访问存储库时需要使用的 URL 模式:

    <url name="two-patterns-example">
      <ivy pattern="http://ivyrep.mycompany.com/[module]/[revision]/ivy-[revision].xml" />
      <artifact pattern="http://ivyrep.mycompany.com/[module]/[revision]/[artifact]-[revision].[ext]" />
    </url>
    

    该模式对于您存储工件的方式是完全灵活的。

    身份验证也在设置文件中使用credentials标签进行处理。

    最后,还支持 FTP 协议。在doco中很难找到,但vfs解析器支持。

    我认为关于我不推荐的选项的信息已经足够了 :-) 话虽如此,我曾经创建了一个基于 FTP 的存储库来管理向客户端发布的版本。拥有这么强大的工具很有用:-)

    【讨论】:

      猜你喜欢
      • 2011-09-15
      • 2011-01-26
      • 2015-08-21
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 2016-05-17
      • 2012-08-08
      相关资源
      最近更新 更多