Ant 尝试使用ApacheIvy发布目录树和辅助属性文件,稍后进行复杂检索

Ant 尝试使用ApacheIvy发布目录树和辅助属性文件,稍后进行复杂检索,ant,ivy,atg,Ant,Ivy,Atg,我仍然在努力弄清楚如何将ApacheIvy集成到我有点复杂的Ant构建中 如果有关系的话,我正在使用ATG Dynamo,这是我试图处理的大部分混乱的原因 模块构建的结果是一个构建目录,其中包含多个子目录。我需要发布构建目录的全部内容,以及一个属性文件env/default.properties,该文件不是由构建生成的,但在以后检索此工件时需要该文件中的一个属性,因为它指示相对于需要安装生成目录内容的另一个属性设置的绝对路径 整个构建将有几个结构类似的模块。我非常确定执行ivy:publish的

我仍然在努力弄清楚如何将ApacheIvy集成到我有点复杂的Ant构建中

如果有关系的话,我正在使用ATG Dynamo,这是我试图处理的大部分混乱的原因

模块构建的结果是一个构建目录,其中包含多个子目录。我需要发布构建目录的全部内容,以及一个属性文件env/default.properties,该文件不是由构建生成的,但在以后检索此工件时需要该文件中的一个属性,因为它指示相对于需要安装生成目录内容的另一个属性设置的绝对路径

整个构建将有几个结构类似的模块。我非常确定执行ivy:publish的目标可以在所有模块构建脚本导入的基本构建脚本中定义


我设想每个模块的ivy.xml都有一个publications元素,指定要发布的两个部分,即build目录和env/default.properties文件。我从未见过发布目录的示例,这可能吗?如果没有,那么我想我必须在ivy:publish目标中指定更多的处理和细节,这样我将首先将build目录和env/default.properties文件压缩到一个zip文件中,并将其作为单个工件发布。这更有可能吗?

这在常春藤中是一个全新的概念,目前还没有发布,但有一种包装概念可以处理目录

见正式文件:

有了这个功能,Ivy可以自己处理文件夹的解压缩。在发布部分,你是自己的,你必须自己制作一个拉链。在检索部分,Ivy将解压缩缓存中的文件夹。因此,您仍然需要执行一些过程才能在适当的位置复制它

它还没有经过测试,但是您可能可以通过实现一个定制的解包算法来进一步,该算法将在适当的位置进行解包。您必须实现一个扩展org.apache.ivy.core.pack.ArchivePacking的类,并在ivysettings.xml中声明它,如下所示:

<ivysetting>
    <classpath file="${ivy.settings.dir}/custom-packing.jar"/>
    <typedef name="customPacking" classname="com.acme.ivy.CustomPacking" />
    <customPacking />
</ivysettings>
然后在您的ivy.xml中,声明您的工件按照您的自定义打包名称打包:

<ivy-module version="1.0">
    ...
    <publications>
        <artifact name="mydistrib" type="distrib" ext=".zip" packaging="my-custom-packaging" />
    </publications>
</ivy-module>

看:我还需要一段时间才能充分利用这一点,但我想这听起来很合适。我仍然需要弄清楚如何将工件解压缩到一个动态位置。