Ant 如何阻止常春藤解析的状态
在我们公司,我们使用每个人都包含的基本ant文件来进行构建。它包含我们想要全局统一定义的内容,比如构建测试、测试覆盖率、构建发布、在ivy上发布等等 我希望在为创建发布版本而进行的ivy解析中,拒绝具有测试(集成)状态的库。基本上,对于发布版本,您只能使用发布类库 但是,我无法在ivy resolve ant任务中(而不是在ivy.xml文件中)实现这一点 有人对如何实现这一点有想法吗?选项1 严格地说,您有两组已解析的库,因此这可以通过使用两个常春藤文件来解决。一个列出了最新集成版本的依赖项,另一个列出了最新发布版本的依赖项 然后build.xml文件将有两个解析目标,由发布属性控制Ant 如何阻止常春藤解析的状态,ant,build-process,ivy,Ant,Build Process,Ivy,在我们公司,我们使用每个人都包含的基本ant文件来进行构建。它包含我们想要全局统一定义的内容,比如构建测试、测试覆盖率、构建发布、在ivy上发布等等 我希望在为创建发布版本而进行的ivy解析中,拒绝具有测试(集成)状态的库。基本上,对于发布版本,您只能使用发布类库 但是,我无法在ivy resolve ant任务中(而不是在ivy.xml文件中)实现这一点 有人对如何实现这一点有想法吗?选项1 严格地说,您有两组已解析的库,因此这可以通过使用两个常春藤文件来解决。一个列出了最新集成版本的依赖项,
<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文件是由其他人提供的。在这种情况下,请使用选项2和一个脚本,该脚本首先根据您想要强制执行的一组业务规则验证ivy.xml。ivy的设计目的不是验证它自己的内容。在我看来,您真正需要的是与常春藤作者商定一些规则,然后通过XML验证强制执行这些规则。我用来强制执行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>
<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