3

Antビルドスクリプトで直接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

2番目のアプローチでは、次のエラーメッセージが表示されます。

ftp doesn't support the "classpathref" attribute

ftpタスクのビルドスクリプトでクラスパスを設定することは可能ですか、それともサーバーのビルドスクリプトの外部で行う必要がありますか?ビルドスクリプトが自己完結型であると便利です。

解決:

クラスパス参照を使用してftpタスクを再定義するだけです。

<taskdef name="ftp" classname="org.apache.tools.ant.taskdefs.optional.net.FTP">
 <classpath>
    <pathelement location="\lib\commons-net-1.4.0.jar"/>
 </classpath>
</taskdef>
4

1 に答える 1

1

-lib またはグローバル インストールなしでオプションのタスクを ant にロードする方法でコメントされているソリューションを試しましたか? ?

少し前に同様の問題があり、新しいクラスローダーを追加して解決しました。

よろしく

于 2013-02-21T08:17:25.273 に答える