下载后加载ant库

问题描述

| 我正在尝试编写一个Ant脚本,该脚本从我们的存储库中下载库(ivy和svnant),并将它们用作同一构建脚本中的taskdef \。如果所有库都存在或全部丢失,它都可以工作,但是如果需要辅助库(如svnClientAdapter),则会收到错误消息:
jar:file:/home/reillym/.ant/lib/svnant.jar!/org/tigris/subversion/svnant/svnantlib.xml:5: taskdef A class needed by class org.tigris.subversion.svnant.SvnTask cannot be found: org/tigris/subversion/svnclientadapter/SVNClientException
换句话说,如果主库存在或不存在,一切都很好。但是如果存在主库,而其中一个依赖库不存在,那么我会失败。如果没有其他更改,第二个呼叫将成功。 我尝试从具有相同结果的任务和类中调用检测/下载任务。我的代码是:
<target name=\"svn-info\" depends=\"load.subverion\">
    <svn><wcVersion path=\"${basedir}\"/></svn>
</target>
<target name=\"load.subversion\" depends=\"download.antlib-svn\">
    <taskdef resource=\"org/tigris/subversion/svnant/svnantlib.xml\">
        <!-- needed in case one of libraries was missing from ant\'s classpath -->
        <classpath>
            <pathelement location=\"${user.home}/.ant/lib/svnClientAdapter.jar\"/>
            <pathelement location=\"${user.home}/.ant/lib/svnant.jar\"/>
            <pathelement location=\"${user.home}/.ant/lib/svnjavahl.jar\"/>
        </classpath>
    </taskdef>
<target name=\"download.antlib-svn\" depends=\"retrieve.antlib-svn\">
    <!-- ant target=\"retrieve.antlib-svn\" inheritAll=\"false\"/ -->
</target>
<target name=\"retrieve.antlib-svn\">
    <get dest=\"${user.home}/.ant/lib/svnClientAdapter.jar\" usetimestamp=\"1\"
         src=\"${url.ivyrepos}/antlib-svn/svnClientAdapter.jar\"/>
    <get dest=\"${user.home}/.ant/lib/svnant.jar\" usetimestamp=\"1\"
         src=\"${url.ivyrepos}/antlib-svn/svnant.jar\"/>
    <get dest=\"${user.home}/.ant/lib/svnjavahl.jar\" usetimestamp=\"1\"
         src=\"${url.ivyrepos}/antlib-svn/svnjavahl.jar\"/>
</target>
如果仅缺少svnant.jar,则一切正常。如果缺少svnClientAdapter.jar,则在taskdef任务上出现“未找到类”错误,而在尝试使用该任务时,则失败在“ NoClassDefFoundError \”上。如前所述,我尝试过在哪里将retrieve.antlib-svn目标称为依赖项,作为“ ant”任务和作为“ java”任务(使用fork)。 这是在Ubuntu 10.10和RedHat ELS6上具有JDK 1.6.0_11的Ant 1.7.0。为简洁起见,删除了检测/避免代码。启用调试后,工作调用与失败之间的唯一区别是ant的类路径中包含缺少的jar,我尝试在taskdef任务中覆盖它。 我不介意产生一个新的顶级ant调用,但是ivy.project.invoked-targets在1.7.0中似乎不可用,而且我还没有想出另一种方法来调用具有相同起始目标的ant 。     

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)