艾薇:我把这些罐子放在哪里?



我正试图说服我工作单位的上级迁移到Apache Ivy。我已经设法让一些沙箱项目使用Ivy来支持构建,现在我已经可以把一个迁移建议放在一起了。

我们都同意一件事:我们不想信任位于公共目录中的jar !我知道,我知道,有点偏执,是的。但是我们希望有这样一种设置:我们从一个可信的源(或者从开源项目本身下载,或者最有可能的是从一个公共的repo)中拉出一个JAR,并在我们"认证"它之前使用它一段时间(让我们祝福它作为一个安全的工件使用)。

然后我们想为我们的许多项目使用的所有jar有一个公共存储库。

我最初的想法是把这个存储库放在版本控制中(我们有一个SVN服务器)。但我不确定最佳实践是什么。将jar放在文件服务器上,然后在Ivy脚本中通过FTP对它们进行传输可能更有意义。

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

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

我必须赞同Brian的建议,即使用像Nexus这样的存储库管理器。从长远来看,这会减少很多工作。您还会发现,Nexus的专业版本使您能够围绕您计划在构建中使用的存储库创建审批流程。参见采购套件功能。

另一方面,如果您决定构建自己的存储库,那么ivy有适合这项工作的工具。您需要非常熟悉ivy设置文件,以及它如何声明和使用解析器。

如果存储库可以通过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>

模式对于您如何存储构件是完全灵活的。

身份验证也在设置文件中使用凭据标签处理。

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

我认为这是一个我不推荐的选项的足够信息:-)已经说过我曾经创建了一个基于FTP的存储库来管理发布到客户端。有这么强大的工具是很有用的:-)

为什么不使用Sonatype的Nexus呢?我已经看到它被用在Maven上,我相信它也会用在Ivy上。

你可以设置它从远程存储库下载到(比如说)一个"测试"存储库。然后,您可以评估这些.jar,如果它们是好的,就将它们上传到"批准的"存储库中以供一般使用。这里有一些认证,但你必须更深入地评估它。当然,您可以通过用户名/密码对来限制上传到存储库。

相关内容

  • 没有找到相关文章

最新更新