linux、windows下通用,亲测。
下面以window为例,假设:hadoop工程目录位于D:\work\eclipse64\hadoop-1.2.0.1.3.0.0,eclipse安装目录为E:\DevelopTools\eclipse64。
1. 安装ant
ant安装不再介绍。
2. 导入hadoop eclipse插件工程
hadoop eclipse工程位于hadoop工程目录的src\contrib\eclipse-plugin下,其默认的项目名称是 MapReduceTools。
3. 导入所需jar包。
a. 将hadoop-core-*.jar(如hadoop-core-1.2.0.1.3.0.0-107.jar)拷贝到hadoop工程目录下(如D:\work\eclipse64\hadoop-1.2.0.1.3.0.0下)。
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工程目录下的src\contrib\build-contrib.xml(如D:\work\eclipse64\hadoop-1.2.0.1.3.0.0\src\contrib\build-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,说明编译成功。