Tags Ivy如何使用版本控制标签
我目前正试图找出在生成VC标记时常春藤的工作流程是怎样的(我们使用SVN,但这并不重要) 问题是,我们开发了多个相互依赖的库。为了简化开发,Tags Ivy如何使用版本控制标签,tags,dependencies,ivy,Tags,Dependencies,Ivy,我目前正试图找出在生成VC标记时常春藤的工作流程是怎样的(我们使用SVN,但这并不重要) 问题是,我们开发了多个相互依赖的库。为了简化开发,ivy.xml中的依赖项标记将属性rev设置为latest.integration <dependencies> <dependency org="my-company" name="my-lib" rev="latest.integration"/> </dependencies> 这实际上是StackOv
ivy.xml
中的依赖项标记将属性rev
设置为latest.integration
<dependencies>
<dependency org="my-company" name="my-lib" rev="latest.integration"/>
</dependencies>
这实际上是StackOverflow的结果表单。这有助于我们在一个库中快速进行更改,并在主应用程序中运行单元测试,而无需手动更改修订
开发完成后,我们将libs发布到内部共享Ivy存储库,并创建一个SVN标记
出现的问题是,一旦我们需要从标记重建软件,Ivy仍然指向latest.integration
,在稍后的时间点,它很可能指向另一个集成版本,甚至可能指向更晚发布的版本(取决于解析器配置)
现在,这个问题很明显:让常春藤来解析已发布的integration.latest
版本的最佳方法是什么。如果答案不是“在创建标记之前手动输入已发布的修订”,这将非常有用。也许我需要在我的ANT构建脚本中添加一些东西,也许我的settings.xml
或ivy.xml
中需要做一些更改
由于Ivy是一个非常智能和方便的小工具,我想一定有办法做到这一点。Ivy用于从项目的原始文件创建已解析的Ivy文件。“已解决”是指适合发布到远程存储库的文件。这意味着不仅解决了动态依赖关系,还将在模块中设置可选的修订和状态属性
以下示例在生成目录中创建一个ivy.xml文件:
<ivy:deliver deliverpattern="${build.dir}/ivy.xml" pubrevision="${project.version}" status="release"/>
检查您将发现已设置依赖项版本的文件
在这一点上,值得注意的是,这种能力是区分常春藤和梅文的微妙但重要的一点。Ivy允许您的自动发布系统简单地创建标签并运行构建。看看Maven所需的复杂步骤,以及它的自动化:
ivy delivered.xml
,它将被签入VC repo。然后,每当需要复制标记版本时,交付的xml将用于覆盖ivy.xml,然后构建应用程序。这有道理吗?@jaw-Yes当然有道理。您正在Subversion中保存“ivy delivered.xml”,以便在灾难发生时重新创建构建。我采用另一种方法,使用存储在发行版存储库中的“ivy.xml”文件。在我的例子中,我使用Nexus作为所有发行版二进制文件(以及这些二进制文件的依赖项)的版本化存储。我标记源代码存储库,以便查看用于创建二进制文件的源代码。这将是一个罕见的事件,我被迫重建一个释放。如前所述,不可能产生完全相同的文件。事实上,在过去几个月里,我们发生了两次“罕见事件”,这就是为什么我要问;)原因不是重新创建确切的构建,而是从该标记创建错误修复分支。然而,随着时间的推移,一些lib已经发展(包括接口更改),因此我们需要使用这些lib的旧版本来避免可能的不兼容。