Page List

Search on the blog

2014年2月8日土曜日

Antを使ってjarファイルをSCP送信



 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 件のコメント:

コメントを投稿