首页 > 技术文章 > 使用Ant发布hadoop代码到服务器

xiaolong1032 2015-04-21 00:28 原文

  首先,搭建Ant环境:

  1.1.下载antzip包,可以直接从官网下,也可以从我的csdn账号下载,这里我使用的Ant版本是:apache-ant-1.8.4-bin

      CSDN Ant 所需jar包下载地址

  1.2.将apache-ant-1.8.4-bin.zip包解压,然后添加到环境变量中去:

    ANT_HOME  //这个Ant home是我自己的本地目录,大家根据自己安装的不同修改
      E:\Program Files (x86)\java\decompression\apache-ant-1.8.4
    PATH变量最前边追加:
      %ANT_HOME%\bin;

  1.3.将解压包中的lib目录下的jsch-0.1.51.jar复制到Ant_Home中的目录中去,如果是Eclipse下的Ant环境必须在Window->Preferences->Ant->Runtime->Classpath中加入jsch-0.1.51

  1.4.项目根目录下建立文件夹classes,dist,lib文件夹,并将解压后lib目录下的jar包加入到新建lib目录下.

  1.5.在项目根目录下建立build.xml  

<?xml version="1.0" encoding="UTF-8"?>
<project name="项目名称" basedir="." default="sshexec">
    <description>本配置文件供ANT编译项目、自动进行单元测试、打包并部署之用。</description>
    <description>默认操作(输入命令:ant)为编译源程序并发布运行。</description>
    <!--属性设置-->
    <property environment="env" />
    <property file="build.properties" />
    <property name="src.dir" value="${basedir}/src" />
    <property name="java.lib.dir" value="${env.JAVA_HOME}/lib" />
    <property name="classes.dir" value="${basedir}/classes" />
    <property name="dist.dir" value="${basedir}/dist" />
    <property name="project.lib.dir" value="${basedir}/lib" />
    <property name="localpath.dir" value="${basedir}" />
    <property name="remote.host" value="hadoop1"/>
    <property name="remote.username" value="root"/>
    <property name="remote.password" value="hadoop"/>
    <property name="remote.home" value="~"/>
    <!--每次需要知道的main类,写到这里-->
    <property name="main.class" value="mapreduce.WordCountApp"/>
    <!-- 基本编译路径设置 -->
    <path id="compile.classpath">
        <fileset dir="${java.lib.dir}">
            <include name="tools.jar" />
        </fileset>
        <fileset dir="${project.lib.dir}">
            <include name="*.jar" />
        </fileset>
    </path>
    <!-- 运行路径设置 -->
    <path id="run.classpath">
        <path refid="compile.classpath" />
        <pathelement location="${classes.dir}" />
    </path>
    <!-- 清理,删除临时目录 -->
    <target name="clean" description="清理,删除临时目录">
        <!--delete dir="${build.dir}" /-->
        <delete dir="${dist.dir}" />
        <delete dir="${classes.dir}" />
        <echo level="info">清理完毕</echo>
    </target>
    <!-- 初始化,建立目录,复制文件 -->
    <target name="init" depends="clean" description="初始化,建立目录,复制文件">
        <mkdir dir="${classes.dir}" />
        <mkdir dir="${dist.dir}" />
    </target>
    <!-- 编译源文件-->
    <target name="compile" depends="init" description="编译源文件">
        <javac srcdir="${src.dir}" destdir="${classes.dir}" source="1.6" target="1.6"  includeAntRuntime="false">
            <classpath refid="compile.classpath" />
        </javac>
    </target>
    <!-- 打包类文件 -->
    <target name="jar" depends="compile" description="打包类文件">
        <jar jarfile="${dist.dir}/jar.jar">
            <fileset dir="${classes.dir}" includes="**/*.*" />
        </jar>
    </target>
    <!--上传到服务器
    **需要把lib目录下的jsch-0.1.51拷贝到$ANT_HOME/lib下,如果是Eclipse下的Ant环境必须在Window->Preferences->Ant->Runtime->Classpath中加入jsch-0.1.51。
    -->
    <target name="ssh" depends="jar">
        <scp file="${dist.dir}/jar.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="source /etc/profile; hadoop jar ${remote.home}/jar.jar ${main.class}"/>
    </target>
</project>
build.xml

  1.5.1."remote.host"的值改为自己远程服务器的名称.

  1.5.2."remote.username"的值修改为登录远程的用户名.

  1.5.3."remote.password"的值修改为登录远程的用户密码.

  1.5.4."main.class"的值修改为我们需要运行的代码即可.

  弄完这些就可以测试我们搭建好的Ant环境了.

推荐阅读