【问题标题】:How can I publish extra meta-artifacts in ivy transparently for developers?如何为开发人员透明地在 ivy 中发布额外的元工件?
【发布时间】:2015-07-03 06:17:23
【问题描述】:

我们有构建系统,它构建了很多组件。构建的组件通过 ivy 在 artifactory 中发布其工件。

我想在发布期间为每个组件附加一个额外的元工件,但对开发人员来说是透明的。这个元工件将包含有关 build-agent、build-log、changelog 等的信息。 我有权访问构建代理,因此我可以:

  • 更改构建代理上的一些 ivy 配置文件
  • 在构建代理上安装带有补丁的定制 ivy
  • 修改ivysettings.xml文件

我没有在 ivy 文档中找到任何信息。不过我知道ivy源码里面有“options.getExtraArtifacts()”之类的方法,所以我想应该是有办法的。

等待您的建议。

提前致谢!

更新: 我发现“options.getExtraArtifacts()”在“publish”标签中提供了一个“artifact”子标签: https://ant.apache.org/ivy/history/2.4.0/use/publish.html

【问题讨论】:

    标签: ant ivy artifactory


    【解决方案1】:

    选项 1:人工元数据

    您使用的是 Artifactory Pro 吗?我自己不是用户,但文档描述了一种将任意基于 XML 的元数据附加到存储在 Artifactory 中的任何工件的功能。应该很容易从您的构建中调用的独立 REST API:

    https://www.jfrog.com/confluence/display/RTF2X/Attaching+and+Reading+Metadata

    这种方法的最大优点是这些数据是可搜索的

    选项 2:Jenkins 插件

    再说一次,我不是 Artifactory 用户,但我一直对这个插件很感兴趣,据报道它提供了 Jenkins 和 Artifactory 之间的紧密集成。相关位是插件发布的所谓“构建信息”。如果这不包括您正在寻找的一些信息,我会感到惊讶。

    https://wiki.jenkins-ci.org/display/JENKINS/Artifactory+Plugin

    选项 3:附加自定义元数据文件

    典型的 Maven 存储库不支持元数据。 Artifactory 和 Nexus 都有定制的扩展,似乎在这两种产品中,此功能都是付费功能...

    如果您只想存储元数据并且不在乎缺少搜索界面,那么为什么不简单地将包含您的元数据的文件附加为附加模块文件呢?以下示例记录了如何执行此操作:

    how to publish 3rdparty artifacts with ivy and nexus

    选项 4:Ivy 额外属性

    如果您将数据存储在 ivy 存储库中,这只是一个选项(您更有可能使用 Maven 存储库格式)。

    Ivy 能够在 ivy 模块文件中存储自定义属性。

    http://ant.apache.org/ivy/history/latest-milestone/concept.html#extra

    以下答案描述了如何使用这些来影响常春藤存储库的布局。

    Dynamically updating Ivy extra attributes

    【讨论】:

      猜你喜欢
      • 2011-10-28
      • 1970-01-01
      • 2015-02-04
      • 2011-01-02
      • 1970-01-01
      • 2012-03-12
      • 2016-07-19
      • 2011-07-03
      相关资源
      最近更新 更多