Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant 如何阻止常春藤解析的状态_Ant_Build Process_Ivy - Fatal编程技术网

Ant 如何阻止常春藤解析的状态

Ant 如何阻止常春藤解析的状态,ant,build-process,ivy,Ant,Build Process,Ivy,在我们公司,我们使用每个人都包含的基本ant文件来进行构建。它包含我们想要全局统一定义的内容,比如构建测试、测试覆盖率、构建发布、在ivy上发布等等 我希望在为创建发布版本而进行的ivy解析中,拒绝具有测试(集成)状态的库。基本上,对于发布版本,您只能使用发布类库 但是,我无法在ivy resolve ant任务中(而不是在ivy.xml文件中)实现这一点 有人对如何实现这一点有想法吗?选项1 严格地说,您有两组已解析的库,因此这可以通过使用两个常春藤文件来解决。一个列出了最新集成版本的依赖项,

在我们公司,我们使用每个人都包含的基本ant文件来进行构建。它包含我们想要全局统一定义的内容,比如构建测试、测试覆盖率、构建发布、在ivy上发布等等

我希望在为创建发布版本而进行的ivy解析中,拒绝具有测试(集成)状态的库。基本上,对于发布版本,您只能使用发布类库

但是,我无法在ivy resolve ant任务中(而不是在ivy.xml文件中)实现这一点

有人对如何实现这一点有想法吗?

选项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文件是由其他人提供的。在这种情况下,请使用选项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