最近開始學習Hadoop,hadoop 的新版本爲了能和各個eclipse 的版本兼容,所以只提供了源代碼,開發人員須要手動編譯。
hadoop eclipse 插件的源代碼位於$HADOOP_HOME/src/contrib/eclipse-plugin 下面。
若是隻想單獨編譯hadoop 的ecliose 插件那麼須要修改該目錄下面的build.xml 文件
下面是個人一個配置文件,你們能夠根據本身的環境修改,編譯過程須要用到eclipse的目錄以及hadoop的lib下面的相關jar文件,因此須要在此配置,注意改爲你的hadoop所對應的版本。
Xml代碼
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="jar" name="eclipse-plugin">
<property name="name" value="${ant.project.name}"/>
<property name="root" value="${basedir}"/>
<property name="hadoop.root" location="/home/chengxw/hadoop-1.2.0"/>
<property name='version' value='1.2.0'/>
<property name='eclipse.home' location='/home/chengxw/soft/eclipse'/>
<property name="build.dir" location="${hadoop.root}/build/contrib/${name}"/>
<property name="build.classes" location="${build.dir}/classes"/>
<property name="src.dir" location="${root}/src/java"/>
<path id="eclipse-sdk-jars">
<fileset dir="${eclipse.home}/plugins/">
<include name="org.eclipse.ui*.jar"/>
<include name="org.eclipse.jdt*.jar"/>
<include name="org.eclipse.core*.jar"/>
<include name="org.eclipse.equinox*.jar"/>
<include name="org.eclipse.debug*.jar"/>
<include name="org.eclipse.osgi*.jar"/>
<include name="org.eclipse.swt*.jar"/>
<include name="org.eclipse.jface*.jar"/>
<include name="org.eclipse.team.cvs.ssh2*.jar"/>
<include name="com.jcraft.jsch*.jar"/>
</fileset>
</path>
<!-- Override classpath to include Eclipse SDK jars -->
<path id="classpath">
<fileset dir="${hadoop.root}">
<include name="*.jar"/>
</fileset>
<path refid="eclipse-sdk-jars"/>
</path>
<target name="compile">
<mkdir dir="${build.dir}/classes"/>
<javac
encoding="ISO-8859-1"
srcdir="${src.dir}"
includes="**/*.java"
destdir="${build.classes}"
debug="on"
deprecation="off">
<classpath refid="classpath"/>
</javac>
</target>
<!-- Override jar target to specify manifest-->
<target name="jar" depends="compile">
<mkdir dir="${build.dir}/lib"/>
<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/jackson-core-asl-1.8.8.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-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>
</project>
而後執行 ant jar
編譯後的文件位於:$HADOOP_HOME/build/contrib/eclipse-plugin 下面
這時候插件還不能使用,還須要修改 jar 文件中的 META-INF/MANIFEST.MF文件
將
Bundle-ClassPath:classes/,lib/hadoop-core.jar
修改成:
Bundle-ClassPath:classes/,lib/hadoop-core.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, lib/commons-httpclient-3.0.1.jar,lib/commons-cli-1.2.jar
你們注意這些jar 文件的版本和你的hadoop 中的版本對應。 將編譯後的hadoop-eclipse-plugin-1.2.0.jar 文件,複製到eclipse 的 plugins 下面便可。