Eclipse+Ant+sshexec部署服务到远程服务器

这里介绍,如何通过本地编写代码,通过Ant构建部署在远程服务器上并直接运行。

eclipse需要额外的jar包。jsch-0.1.54.jar,如何添加这个插件,可以参考这里

编写本地代码:

这里准备一个java类,用来简单测试,获取操作系统名称并打印出来。代码很简单,如下:

package com.xxx.ant;

public class GetOS {
    public static void main(String[] args) {
        String os = System.getProperty("os.name");
        System.out.println(os);
    }
}

接下来,我们准备构建的xml文件,这里给出build2.xml文件的全部内容。

<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." name="ant" default="sshexec">
    <property name="main.class" value="com.xxx.ant.GetOS"/>
    <property name="src.dir" value="${basedir}/src" />
    <property name="java.lib.dir" value="${basedir}/lib"/>
    <property name="localpath.dir" value="${basedir}"/>
    <property name="dest.dir" value="${basedir}/dest"/>
    <property name="classes.dir" value="${basedir}/classes"/>
    <property name="third.lib.dir" value="${basedir}/lib"/>
    <property name="remote.host" value="10.119.9.149"/>
    <property name="remote.username" value="root"/>
    <property name="remote.password" value="root"/>
    <property name="remote.home" value="~"/>
    
    <path id="compile.classpath">
        <fileset dir="${java.lib.dir}">          
            <include name="tools.jar"/>
        </fileset>
        <fileset dir="${third.lib.dir}">          
            <include name="*.jar"/>
        </fileset>
    </path>
    
    <path id="run.classpath">
        <path refid="compile.classpath"/>
        <pathelement location="${classes.dir}" />
    </path>
    
    <target name="clean">
        <delete dir="${classes.dir}"/>
        <delete dir="${dest.dir}"/>
        <echo level="info">清理完毕</echo>
    </target>
    <target name="init" depends="clean">
        <mkdir dir="${classes.dir}"/>
        <mkdir dir="${dest.dir}"/>
    </target>
    
    <target name="compile" depends="init">
        <javac srcdir="${src.dir}" destdir="${classes.dir}" source="1.8" target="1.8" includeAntRuntime="false" debug="false" verbose="false" encoding="UTF-8">
            <classpath refid="compile.classpath"/>
        </javac>   
    </target>
    
    <target name="build" depends="compile">
        <jar jarfile="${dest.dir}/getos.jar">
            <fileset dir="${classes.dir}" includes="**/*.*"/>
        </jar>
    </target>
    
    <target name="ssh" depends="build">
        <scp  file="${dest.dir}/getos.jar" todir="${remote.username}@${remote.host}:${remote.home}" password="${remote.password}" trust="true"/>    
    </target>
    
    <target name="sshexec" depends="ssh">
        <sshexec host="${remote.host}" username="${remote.username}" password="${remote.password}" trust="true" command="java -cp ${remote.home}/getos.jar ${main.class}"/>     
    </target>
</project>

这是一个普通的构建脚本:在构建之前,先是清理以前的构建内容,避免受影响,然后初始化操作,生成需要的文件夹classes,dest,接着是编译java文件,然后生成class,将生成的class文件再打jar包。本来打完jar包,按照一般的流程,这里就是结束了,接下来,我们就是需要将jar包拷贝到linux服务器上执行,这类用了ant构建插件的ssh任务和sshexe任务,直接将jar包通过scp的方式拷贝到了linux,然后,运行java命令,执行com.xxx.ant.GetOS这个类。

运行之前,做个对比,本地运行结果,打印Windows 7

运行:右键build2.xml ->Run As->Ant Build

控制台查看构建结果(日志中间省略打印类路径信息):

构建成功,并且打印了os.name为Linux。

远程服务器在构建前后的对比,并且我们也可以验证在linux远程服务器下运行获取os.name是否为Linux:

构建过程,按照build.xml中定义的任务依赖关系,首先是清理(如果以前构建过),初始化,编译,构建,ssh拷贝jar包,sshexec运行linux命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值