在我们公司,我们使用每个人都包含的基本ant文件进行构建。它包含我们想要全局和统一定义的内容,如构建测试,测试覆盖,构建发布,在常春藤上发布等。
我想强制执行在创建发布版本的常春藤解析中,拒绝具有测试(集成)状态的库。基本上,对于发布版本,您只能使用发布类库。
但是,我找不到在常春藤解析ant任务中强制执行此操作的方法(不在ivy.xml文件中)。
有人知道如何实现这个目标吗?
答案 0 :(得分:1)
严格来说,你有两套已解析的库,所以这可以通过拥有两个常春藤文件来解决。一个列出了对最新集成的依赖性,另一个列出了最新版本的其他版本。
然后,build.xml文件将具有两个分辨率目标,由发布属性
控制<target name="resolve-int" unless="release.build">
<ivy:resolve file="ivy-int.xml"/>
</target>
<target name="resolve-rel" if="release.build">
<ivy:resolve file="ivy-rel.xml"/>
</target>
<target name="resolve" depends="resolve-int,resolve-rel"/>
使用属性确定所需的动态修订:
<强>的ivy.xml 强>
<ivy-module version="2.0">
<info organisation="com.myspotontheweb" module="demo"/>
<dependencies>
<dependency org="commons-lang" name="commons-lang" rev="${dynamic.revision}"/>
</dependencies>
</ivy-module>
<强>的build.xml 强>
属性 dynamic.revision 的默认值为 latest.integration
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="demo-ivy" default="resolve">
<property name="dynamic.revision" value="latest.integration"/>
<target name="resolve">
<ivy:resolve/>
</target>
..
</project>
然后,发布版本将覆盖此值,可能来自命令行,如下所示:
ant -Ddynamic.revision=latest.release