Apache Ivy:我在哪里放置所有这些JAR?

时间:2011-09-09 13:35:40

标签: apache ant maven ivy

我试图说服我工作地点的高层人员迁移到Apache Ivy。我已经设法让一些沙盒项目使用Ivy来为构建提供支持,现在我有一个绿灯来整理迁移提案。

我们都同意一件事:我们不想信任位于公共目录中的JAR!我知道,我知道,有点偏执,是的。但是我们希望有一个设置,我们从可信来源(从开源项目本身下载,或者很可能是gulp,一个公共仓库)下载JAR,并在我们“<之前”使用它一段时间em>认证“它(将它作为一种安全的工件给予我们祝福)。

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

我最初的想法是将此存储库放在版本控制中(我们有一个SVN服务器)。但我不确定最佳做法是什么。在Ivy脚本中将JAR放在文件服务器和FTP上可能更有意义。

无论哪种方式,SVN(HTTPS)或FTP,我们所有的服务器都经过身份验证。所以,少数问题:

  1. 我们应该在哪里发布所有“认证”JAR(从`log4j`到我们生产的任何本土JAR)?最佳实践有哪些要求?
  2. “ivyrep”解析器类型不接受用户名或passwd属性。如果我们的“JAR服务器”(FTP,SVN等)经过身份验证,我该如何配置Ivy脚本才能登录?

2 个答案:

答案 0 :(得分:2)

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

另一方面,如果您决定构建自己的存储库,那么常春藤就拥有了工作的工具。您需要熟悉常春藤settings文件以及它如何声明和使用resolvers

如果可以通过HTTPS访问存储库,url解析程序应该能够访问它。解析器将假定工件的每个版本都在不同的目录中,您需要指定常春藤在访问存储库时需要使用的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的存储库来管理对客户端的发布。拥有一个功能强大的工具很有用: - )

答案 1 :(得分:1)

为什么不使用Sonatype的Nexus之类的东西。我已经看到它用于Maven,我相信它对Ivy起作用。

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