蚂蚁目标扩大依赖档案

时间:2017-02-06 20:27:19

标签: maven ant ivy ant-contrib

我有一个Ant / Ivy构建过程,我正在努力改进。我需要解决依赖关系,然后将它们提取到特定的文件夹。

依赖关系解析为$(build_root)/dependency/downloads/[configuration]/[artifactId]/[version]/位置,这很好用。我最终在该位置使用.pom.tar.bz2文件。

我想要做的是更多地控制依赖关系.tar.bz2到目录的提取。我们基本上试图通过控制lib输出的提取方式和位置来防止依赖性inc.tar.bz2的冲突。

我们目前通过解决所有依赖关系,然后有一个目标来盲目地扩展档案来实现这一目标。

我们的决心步骤如下:

<target name="resolve">
    <ivy:retrieve pattern="${dependency.dir}/[conf]/[artifact]/[artifact]-[revision].[ext]" conf="*" />
    <condition property="archive.dir.present">
        <resourceexists>
            <file file="${dependency.dir}"/>
        </resourceexists>
    </condition>
    <antcall if:set="archive.dir.present" target="expand-archives"/>
</target>

请注意单独调用&#34; expand-archives&#34;目标,看起来像:

<target name="expand-archives" description="Expand your Dependency Archives!">
    <for param="file">
        <path>
            <fileset dir="${dependency.dir}" includes="**/*.tar.bz2"/>
        </path>
        <sequential>
            <bunzip2 src="@{file}" dest="${dependency.dir}" />
        </sequential>
    </for>
    <!-- Follow the bunzip2 by the tar command to extract the tarball -->
    <for param="file">
        <path>
            <fileset dir="${dependency.dir}" includes="**/*.tar"/>
        </path>
        <sequential>
            <echo message="Processing: @{file}"/>
            <exec executable="tar" failonerror="true">
                <arg value="-C"/>
                <arg value="${dependency.dir}"/>
                <arg value="-xvf"/>
                <arg value="@{file}"/>
            </exec>
        </sequential>
    </for>
</target>

我希望拥有的是dest="${dependency.dir}附加了依赖关系的artifactID。

有没有办法从检索中获取[artifact]信息并将其传递到expand-archives目标?

谢谢

1 个答案:

答案 0 :(得分:0)

如果您对档案中的文件有依赖关系,也许您应该调查常春藤中的packager resolver

此解析程序旨在下载+解压缩档案,然后使用ANT片段决定您要依赖的文件。乍一看很复杂,但一旦理解得非常强大。

以下示例显示如何依赖jar,包含在可下载的“.tar.gz”存档中: