Apache Antを使ってjarファイルをSCP送信してみました。
準備
まず、SCP送信タスクに必要なライブラリをインストールします。http://ant.apache.org/manual/install.html#librarydependencies
の"Library Dependencies"に記載されている必要なjar(Needed for = "sshexec and scp tasks"のもの)をダウンロードし、~/.ant/libに格納します。
次に、サンプルとして使用するファイル(~/test/src/com/kenjih/ant/HelloWorld.java)を作成します。
package com.kenjih.ant; public class HelloWorld { public void sayHello() { System.out.println("Hello, world!"); } public static void main(String[] args) { new HelloWorld().sayHello(); } }
build.xmlの作成
以下のファイル(~/test/build.xml)を作成します。太文字のところは環境にあわせて設定してください。
<project name="HelloWorld" basedir="." default="run"> <property name="src.dir" value="src"/> <property name="build.dir" value="bin"/> <property name="class.dir" value="${build.dir}/class"/> <property name="jar.dir" value="${build.dir}/jar"/> <property name="main-class" value="com.kenjih.ant.HelloWorld"/> <property name="remote.jar.dir" value="/tmp/test"/> <property name="remote.ssh.identity.file" value = "${user.home}/.ssh/identityfile"/> <property name="remote.ssh.password" value="password"/> <property name="remote.ssh.user" value="username"/> <property name="remote.ssh.host" value="hostname"/> <property name="remote.ssh.port" value="portnumber"/> <!-- clean the project --> <target name="clean"> <delete dir="${build.dir}"/> </target> <!-- build the project --> <target name="compile"> <mkdir dir="${class.dir}"/> <javac srcdir="${src.dir}" destdir="${class.dir}"/> </target> <!-- create an executable jar file --> <target name="jar" depends="compile"> <mkdir dir="${jar.dir}"/> <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${class.dir}"> <manifest> <attribute name="Main-Class" value="${main-class}"/> </manifest> </jar> </target> <!-- run the program --> <target name="run" depends="jar"> <java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/> </target> <!-- send the jar file to a remote server --> <target name="send" depends="jar"> <scp file="${jar.dir}/${ant.project.name}.jar" todir="${remote.ssh.user}@${remote.ssh.host}:${remote.jar.dir}/${ant.project.name}.jar" port="${remote.ssh.port}" keyfile="${remote.ssh.identity.file}" passphrase="${remote.ssh.password}"/> </target> </project>
実行
以下のコマンドを実行すると、サーバーにjarファイルがSCP送信されます。~/test$ ant send
0 件のコメント:
コメントを投稿