昨天在使用ant生成eclipse-plugin的时候,直接进入到${HADOOP_ROOT}/src/contrib/eclipse-plugin下使用ant命令,发现无法生成,之后在网上找到了一篇针对hadoop-1.1.2版本进行ant编译的文章,虽然我使用的是hadoop1.0.0,但是依照文中指定位置的文件,分别进行修改,确实可以成功编译了。故将这篇文章引用过来,为更多人服务。但是,由于版本不同,具体的jar包也会略有差异,为了方便用hadoop1.0.0的朋友使用,在下面也将我的相对位置的文件的修改内容附上。
网上参考贴:http://www.cnblogs.com/chenying99/archive/2013/05/09/3069228.html
修改1:${hadoop.root}/src/contrib目录的build-contrib.xml
<!--2013/12/29:begin ant eclipse-plugin-->
<property name="eclipse.home" location="/usr/tools/eclipse"/>
<property name="version" value="1.0.0"/>
<!--end ant eclipse-plugin-->
修改2:${hadoop.root}/src/contrib/eclipse-plugin目录下的build.xml
<!-- Override jar target to specify manifest -->
<target name="jar" depends="compile" unless="skip.contrib">
<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}/build/ivy/lib/Hadoop/common/commons-cli-${commons-cli.version}.jar" todir="${build.dir}/lib" verbose="true"/>-->
<!--2013/12/29: ant eclipse-plugin for hadoop-->
<copy file="${hadoop.root}/lib/commons-cli-${commons-cli.version}.jar" todir="${build.dir}/lib" verbose="true"/>
<!-- ...jar...hadoop-eclipse-1.1.2.jar. -->
<copy file="${hadoop.root}/lib/commons-lang-2.4.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/jackson-mapper-asl-1.0.1.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/jackson-core-asl-1.0.1.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar" todir="${build.dir}/lib" verbose="true"/>
<!--2013/12/29: ant eclipse-plugin for hadoop-->
<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>
<!-- Override classpath to include Eclipse SDK jars -->
<path id="classpath">
<pathelement location="${build.classes}"/>
<pathelement location="${hadoop.root}/build/classes"/>
<path refid="eclipse-sdk-jars"/>
<!--2013/12/29:begin ant eclipse-plugin for hadoop-->
<pathelement location="${hadoop.root}/hadoop-core-1.0.0.jar"/>
<!--2013/12/29:begin ant eclipse-plugin for hadoop-->
</path>
修改3:${hadoop.root}/src/contrib/eclipse-plugin/META-INF目录下MANIFEST.MF,此处需注意,各个jar包之间由逗号相隔,且没有空格或回车符,否则,ant编译虽然能过,但会导致新建hadoop location的时候,出现没有反应的现象。
Bundle-ClassPath: classes/,lib/hadoop-core.jar,lib/commons-cli-1.2.jar,lib/commons-configuration-1.6.jar,lib/commons-httpclient-3.0.1.jar,lib/commons-lang-2.4.jar,lib/jackson-core-asl-1.0.1.jar,lib/jackson-mapper-asl-1.0.1.jar