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
下载后加载ant库_Ant_Download_Classpath_Taskdef - Fatal编程技术网

下载后加载ant库

下载后加载ant库,ant,download,classpath,taskdef,Ant,Download,Classpath,Taskdef,我正试图编写一个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

我正试图编写一个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)

这是Ant 1.7.0和Ubuntu10.10上的JDK1.6.011以及RedHat ELS6。为简洁起见,已删除检测/避免代码。启用调试后,工作调用和失败调用之间的唯一区别是缺少的jar包含在ant的类路径中,我尝试在taskdef任务中覆盖该类路径


我不介意生成一个新的顶级ant调用,但是ivy.project.invoked-targets在1.7.0中似乎不可用,而且我还没有找到另一种方法来使用相同的起始目标调用ant。

它不会开箱即用:它与Java类加载器递归工作以及它们解决依赖关系这一事实有关,不是蚂蚁本身


我为你感到抱歉,我认为如果不自己开发一个Ant扩展,这是不可能实现的,我也不知道如何实现它。

它不会开箱即用:它与Java类加载器递归工作这一事实有关,它们解决依赖关系,而不是Ant本身

我为你感到抱歉,我认为如果不开发一个Ant扩展,这是不可能实现的,我也不知道如何实现它