我拥有 50 个其他项目(由其他人拥有)中的 20 个 Ivy 项目,我在我的项目中使用了他们二进制文件的某些版本。
问题是在发布期间,我必须手动增加我的 20 个 ivy 文件的版本, checkin 文件并构建二进制文件。这很耗时。尽管 eclipse 查找和替换有帮助。
使用 ant 实现自动化的步骤:
1) 单独检查 ivy 文件。 2)使用脚本/逻辑仅更改我的模块/我的模块相互依赖的版本。 3) 检查文件。 4) 标记要发布的分支。
停留在第 2 步休息都相对容易。
尝试过 xml 任务,但由于有时我们不知道确切的索引,因此在搜索时面临挑战。
感谢您的帮助。
最佳答案
您是否考虑过使用 dynamic revision numbers在你的 Ivy 文件里?
<dependency org="myorg" name="myname1" revision="latest.release"/>
<dependency org="myorg" name="myname2" revision="latest.integration"/>
Ivy 会在发布到 ivy 存储库的 ivy.xml 文件中巧妙地解决这些依赖关系。
使用ivy生成buildnumber
buildnumber是一项非常聪明的任务,它会根据您已经发布的版本生成序列中的下一个数字。
控制构建顺序
ivy 的另一个多模块技巧是使用 buildlist任务来控制构建模块的顺序。它基于每个子模块的 ivy 文件中声明的相互依赖关系工作。这确保了 latest.release 和 latest.integration 修订将找到预期的修订。
解析动态修订
正如我所说,这通常是自动完成的,但有时您需要实际查看使用的真实版本,例如在生成 Maven POM 文件时(发布到 Maven 存储库时)。
以下示例使用 ivy deliver 和 makepom 任务创建一个扩展了动态修订的 Maven POM。
<target name="generate-pom">
<ivy:deliver deliverpattern="${build.dir}/ivy.xml" pubrevision="${publish.revision}" status="${publish.status}"/>
<ivy:makepom ivyfile="${build.dir}/ivy.xml" pomfile="${build.dir}/${ivy.module}.pom"/>
</target>
<target name="publish" depends="build,generate-pom">
<ivy:publish resolver="${publish.resolver}" pubrevision="${publish.revision}" overwrite="true" publishivy="false" >
<artifacts pattern="${build.dir}/[artifact](-[classifier]).[ext]"/>
</ivy:publish>
</target>
关于java - 使用 ant 脚本为我的所有项目自动增加 ivy 修订版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8384024/