AntタスクでSFTPを使ってファイルをアップする Eclipse利用
外部サーバにSFTPでファイルをアップする必要があったので、調べました。
Eclipse3.5のGalireoを利用しています。
1.jschの入手
SSH接続でのファイル転送を実行するには、scpタスクを利用します。
そのためには、jsch.jarを以下からダウンロードして
${ECLIPSE_HOME}\plugins\org.apache.ant_1.7.1.v20090120-1145\lib
などの、antプラグインのlibフォルダにいててください。
http://sourceforge.jp/projects/sfnet_jsch/
※これで出来ると思ったけど、パスが通らないので、Antで利用出来るようにEclipseで以下の設定を行いました。Window→preference→Ant/Runtime のclasspathタブのGlobal Entriesを選択し、Add External Jarsで先程のjsch.jarを指定します。
追記:Eclipseの中に元々入っているものでもOKみたいです。${ECLIPSE_HOME}/plugins/com.jcraft.jsch_0.1.42.jarあたり。
2。Antタスクの作成
SCPタスクの主な属性は以下。
属性 | 詳細 |
---|---|
file | コピー対象ファイル。 例 user[:password]@host:/directory/path コピー対象ファイルはこのfile属性か |
todir | コピー先ディレクトリ。 例 user[:password]@host:/directory/path 必須項目です。 |
port | リモートホストに接続するためのポート。 デフォルト22。 |
password | file属性かtodir属性にパスワードを指定している場合は不要です。 |
記述すると
<target name="deploy-war" > <scp todir="${USERID}:${PASSWORD}@${HOST_TEST}:${TOMCAT_HOME}/webapps/" trust="true"> <fileset refid="war_transfer" /> </scp> </target>
みたいな感じです。
追記:keyfileを使って認証する場合は、以下の作業が必要。
Eclipseで
Window→Prefference
左側ののGeneral→Network Connections→SSH2
右側のKye ManagementタブでGenerate DSA Keyなどでキーセットを作成
公開キーは、サーバ上の.sshに追加
秘密キーは、build.xmlで以下のように設定
<target name="deploy-war" > <scp todir="${USERID}:${PASSWORD}@${HOST_TEST}:${TOMCAT_HOME}/webapps/" trust="true" keyfile="${KEYFILE}" passphrase="${PASSPHRASE}"> <fileset refid="war_transfer" /> </scp> </target>