代码之家  ›  专栏  ›  技术社区  ›  Joeri Hendrickx

如何阻止常春藤解决方案的状态

  •  0
  • Joeri Hendrickx  · 技术社区  · 16 年前

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

    我希望在为创建发布构建而执行的Ivy解决方案中,具有测试(集成)状态的库将被拒绝。基本上,对于发布版本,您只能使用发布类库。

    但是,我在ivy resolve ant任务(而不是ivy.xml文件)中找不到强制执行此操作的方法。

    有人知道如何做到这一点吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Mark O'Connor    15 年前

    选项1

    严格地说,您有两组已解析的库,所以这可以通过拥有两个常青藤文件来解决。一个列出对最新集成版本的依赖,另一个列出最新版本。

    然后build.xml文件将有两个解析目标,由一个release属性控制。

    <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"/>
    

    选项2

    使用属性确定所需的动态修订:

    IV.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
    
    推荐文章