我想直接在Ant Build脚本中指定fpt任务的类路径。我尝试了以下方法:
<target name="ftp-upload" depends="build-html">
<echo message="Ftp upload started with user ${user}" />
<ftp verbose="yes"
remotedir="${ftp.dir}"
server="${server}"
userid="${user}"
password="${password}"
depends="yes">
<fileset dir="${mystuff.dir}/.." />
<classpath refid="build.classpath" />
</ftp>
</target>
和
<target name="ftp-upload" depends="build-html">
<echo message="Ftp upload started with user ${user}" />
<ftp verbose="yes"
remotedir="${ftp.dir}"
server="${server}"
userid="${user}"
password="${password}"
depends="yes"
classpathref="build.classpath"
>
<fileset dir="${mystuff.dir}/.." />
</ftp>
</target>
第一种方法给我以下错误信息:
Could not create type ftp due to java.lang.NoClassDefFoundError: org/apache/commons/net/ftp/FTPClientConfig
第二种方法给了我以下错误信息:
ftp doesn't support the "classpathref" attribute
是否可以在构建脚本中为ftp任务设置类路径,或者我必须在服务器上的构建脚本之外进行设置?如果构建脚本是自包含的,那就太好了。
解决方案:
只需使用类路径引用重新定义ftp任务:
<taskdef name="ftp" classname="org.apache.tools.ant.taskdefs.optional.net.FTP">
<classpath>
<pathelement location="libcommons-net-1.4.0.jar"/>
</classpath>
</taskdef>
您是否尝试过在How to load a optional task into ant without-lib or global installation中评论的解决方案?
不久前我遇到了一个类似的问题,我通过添加一个新的类加载器解决了这个问题。
问候