动态修改ant类路径

时间:2011-12-05 12:01:01

标签: ant ivy

我想使用依赖于ant类路径的解析器(ssh)。

这样的东西
<resolvers>
...
<ssh ...
...
</resolvers>

要使用它,我需要在ant classpath中使用jsch。 Ant脚本应仅依赖于公共库(也包括已解析的jsch依赖项) - 在任何客户端PC上使用它。场景是:

  1. 下载lib的任务。
  2. 提取libs(jsch等)
  3. 常春藤:配置
  4. 但常春藤:configure没有任何classpathref参数,因此我不清楚如何加载我提取的jar。

    有可能吗?

    或者,可能以某种方式在内部使用扩展类路径再次运行ant?

1 个答案:

答案 0 :(得分:0)

确定, 所以我对问题的评论看起来对我很好,但最后它没有用。

我找到的唯一方法(我的意思是工作方式)是用

运行ant脚本
  1. 下载common-lib(with),其中包含可选常春藤处理所需的所有jar-lib
  2. 构造新的类路径并在具有所需目标的同一构建文件上运行exec:

    <target name="call.task" if="wrapped.task.name">
    <path id="ant.class.path">
        <fileset dir="${tools.lib.dir}" >
            <include name="*.jar" />
        </fileset>
        <pathelement location="${java.class.path}" />
    </path>
    
    <condition property="append.dest.dir" value="-Ddest.dir=${dest.dir}" else="">
        <isset property="dest.dir"/>
    </condition>
    
    <exec executable="ant" failonerror="true">
        <arg line="-f ivy-build.xml" />
        <arg line='-lib "${toString:ant.class.path}"' />
        <arg value="${wrapped.task.name}" />
        <arg value="${append.dest.dir}" />
    </exec>
    </target>