hadoop-1.2.0 eclipse插件编译

linux、windows下通用,亲测。

下面以window为例,假设:hadoop工程目录位于D:workeclipse64hadoop-1.2.0.1.3.0.0,eclipse安装目录为E:DevelopToolseclipse64。

  1. 安装ant

    ant安装不再介绍。

  

  2. 导入hadoop eclipse插件工程

    hadoop eclipse工程位于hadoop工程目录的srccontribeclipse-plugin下,其默认的项目名称是 MapReduceTools。

  3. 导入所需jar包。

    a.  将hadoop-core-*.jar(如hadoop-core-1.2.0.1.3.0.0-107.jar)拷贝到hadoop工程目录下(如D:workeclipse64hadoop-1.2.0.1.3.0.0下)。

    b.  将commons-cli-1.2.jar、commons-lang-2.4.jar、commons-httpclient-3.0.1.jar、 commons-configuration-1.6.jar、jackson-mapper-asl-1.8.8.jar、
jackson-core-asl-1.8.8.jar拷贝到hadoop工程目录下的lib目录(如D:workeclipse64hadoop-1.2.0.1.3.0.0lib下)。
 

    c.  在项目 MapReduceTools 中新建 lib 目录,将hadoop-core-*.jar(如我的为hadoop-core-1.2.0.1.3.0.0-107.jar)拷贝到新建的lib目录下,并且将lib目录下hadoop-core-*.jar重命名为 hadoop-core.jar。

  4. 修改build-contrib.xml。

    a.  将hadoop工程目录下的srccontribuild-contrib.xml(如D:workeclipse64hadoop-1.2.0.1.3.0.0srccontribuild-contrib.xml)文件拷贝到 MapReduceTools 项目目录中。

    b.  添加eclipse.home,添加hadoop版本version:

      <!--添加eclipse.home和hadoop的version-->
      <property name="eclipse.home" location="E:/DevelopTools/eclipse64"/>
      <property name="version" value="1.2.0.1.3.0.0-107"/>

    c.  修改javac.deprecation为on:

      <property name="javac.deprecation" value="on"/><!--原来为off-->

  5. 修改build.xml

    对项目 MapReduceTools 中的文件build.xml做如下修改:

    a.  修改build-contrib.xml的位置,去掉"../",改为当前目录下的build-contrib.xml文件:

      <importfile="build-contrib.xml"/>

    b.  添加hadoop-core:  

      <!-- Override classpath to include Eclipse SDK jars -->
      <path id="classpath">
        <pathelement location="${build.classes}"/>
        <pathelement location="${hadoop.root}/build/classes"/>
        <pathelement location="${hadoop.root}/hadoop-core-${version}.jar"/><!--添加的hadoop-core-->
        <path refid="eclipse-sdk-jars"/>
      </path>

    c.  添加includeantruntime:    

      <target name="compile" depends="init, ivy-retrieve-common" unless="skip.contrib">
        <echo message="contrib: ${name}"/>
        <javac
          encoding="${build.encoding}"
          srcdir="${src.dir}"
          includes="**/*.java"
          destdir="${build.classes}"
          debug="${javac.debug}"
          deprecation="${javac.deprecation}"
          includeantruntime="on"><!--添加includeantruntime="on"-->
          <classpath refid="classpath"/>
        </javac>
      </target>

    d.  修改并添加jar包拷贝:

      <!-- Override jar target to specify manifest -->
      <target name="jar" depends="compile" unless="skip.contrib">
        <mkdir dir="${build.dir}/lib"/>

        <!--修改并添加jar包拷贝-->

        <copy file="${hadoop.root}/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>
        <copy file="${hadoop.root}/lib/commons-cli-1.2.jar" todir="${build.dir}/lib" verbose="true"/>
        <copy file="${hadoop.root}/lib/commons-configuration-1.6.jar" todir="${build.dir}/lib" verbose="true"/>
        <copy file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar" todir="${build.dir}/lib" verbose="true"/>
        <copy file="${hadoop.root}/lib/commons-lang-2.4.jar" todir="${build.dir}/lib" verbose="true"/>
        <copy file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>
        <copy file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>

        <jar
          jarfile="${build.dir}/hadoop-${name}-${version}.jar"
          manifest="${root}/META-INF/MANIFEST.MF">
          <fileset dir="${build.dir}" includes="classes/ lib/"/>
          <fileset dir="${root}" includes="resources/ plugin.xml"/>
        </jar>
      </target>

  6. 修改MANIFEST.MF

    对项目 MapReduceTools 中的META-INF/MANIFEST.MF文件做如下修改:

    Bundle-ClassPath: classes/,
       lib/hadoop-core.jar ,
       lib/commons-cli-1.2.jar ,
       lib/commons-httpclient-3.0.1.jar,
       lib/jackson-core-asl-1.8.8.jar,
       lib/jackson-mapper-asl-1.8.8.jar,
       lib/commons-configuration-1.6.jar,
       lib/commons-lang-2.4.jar

  7. 编译插件

    右键点击build.xml文件->Run as->Ant build,当编译输出BUILD SUCCESSFUL,说明编译成功。

 

原文地址:https://www.cnblogs.com/maybob/p/3652551.html