使用Eclipse&Ant编译hadoop1.x的eclipse插件

注意:以下操作基于Hadoop-1.2.1,Eclipse Luna

1、将hadoop eclipse插件的工程导入Eclipse。插件源码目录如下:

D:\Lab\lib\hadoop\hadoop-1.2.1\src\contrib\eclipse-plugin

2、配置工程依赖

3、准备ant的配置文件

D:\Lab\lib\hadoop\hadoop-1.2.1\src\contrib\build-contrib.xml

将以上build-contrib.xml拷贝到项目目录中,并修改文件内容。具体如下:

  <property name="name" value="${ant.project.name}"/>
  <property name="root" value="${basedir}"/>
  <property name="hadoop.root" location="D:/Lab/lib/hadoop/hadoop-1.2.1"/>
  <property name="eclipse.home" location="D:/Program Files/Eclipse/eclipse-jee-luna-R-win32-x86_64"/>
  <property name="version" value="1.2.1"/>
  <property name="build.contrib.dir" location="${root}/build/contrib"/>
  <property name="build.dir" location="${root}/build/contrib/${name}"/>

4、修改build.xml

<!-- 1.修改 build-contrib.xml的位置,去掉"../" -->
<import file="build-contrib.xml" />

<!-- 2.添加如下,否则提示"软件包 org.apache.hadoop.fs 不存在" -->
<path id="hadoop-jars">
    <fileset dir="${hadoop.root}/">
        <include name="hadoop-*.jar" />
    </fileset>
</path>

<!-- 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" />
    <path refid="hadoop-jars" /><!--本行为添加内容-->
</path>

<!-- 3.修改并添加jar包,有些包已经有了,只添没有的   -->
<!-- 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}/lib/commons-cli-1.2.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/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-mapper-asl-1.8.8.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" />

    <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>

5、修改MENIFEST.MF,在Bundule-ClassPath中增加一些依赖的jar。

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

5、增加Ant Builder。

6、编译

在Project菜单中Build Project

7、运行结果

Buildfile: D:\Lab\ws-back-end\MapReduceTools\build.xml

check-contrib:

init:
        [echo] contrib: eclipse-plugin
       [mkdir] Created dir: D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin
       [mkdir] Created dir: D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\classes
       [mkdir] Created dir: D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\test
       [mkdir] Created dir: D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\system
       [mkdir] Created dir: D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\system\classes
       [mkdir] Created dir: D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\examples
       [mkdir] Created dir: D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\test\logs

init-contrib:

ivy-download:
         [get] Getting: http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.1.0/ivy-2.1.0.jar
         [get] To: D:\Lab\lib\hadoop\hadoop-1.2.1\ivy\ivy-2.1.0.jar
         [get] http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.1.0/ivy-2.1.0.jar moved to http://120.195.54.5:801/videoplayer/ivy-2.1.0.jar?ich_u_r_i=ae068fe40ff82e58486dd0954048cc19&ich_s_t_a_r_t=0&ich_e_n_d=0&ich_k_e_y=1445088923750763152452&ich_t_y_p_e=1&ich_d_i_s_k_i_d=6&ich_u_n_i_t=1
         [get] Not modified - so not downloaded

ivy-probe-antlib:

ivy-init-antlib:

ivy-init:
[ivy:configure] :: Ivy 2.1.0 - 20090925235825 :: http://ant.apache.org/ivy/ ::
[ivy:configure] :: loading settings :: file = D:\Lab\lib\hadoop\hadoop-1.2.1\ivy\ivysettings.xml

ivy-resolve-common:

ivy-retrieve-common:
[ivy:cachepath] DEPRECATED: ‘ivy.conf.file‘ is deprecated, use ‘ivy.settings.file‘ instead
[ivy:cachepath] :: loading settings :: file = D:\Lab\lib\hadoop\hadoop-1.2.1\ivy\ivysettings.xml

compile:
        [echo] contrib: eclipse-plugin
       [javac] D:\Lab\ws-back-end\MapReduceTools\build.xml:65: warning: ‘includeantruntime‘ was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
       [javac] Compiling 45 source files to D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\classes
       [javac] 注: 某些输入文件使用或覆盖了已过时的 API。
       [javac] 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
       [javac] 注: 某些输入文件使用了未经检查或不安全的操作。
       [javac] 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

jar:
       [mkdir] Created dir: D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\lib
        [copy] Copying 1 file to D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\lib
        [copy] Copying D:\Lab\lib\hadoop\hadoop-1.2.1\hadoop-core-1.2.1.jar to D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\lib\hadoop-core.jar
        [copy] Copying 1 file to D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\lib
        [copy] Copying D:\Lab\lib\hadoop\hadoop-1.2.1\lib\commons-cli-1.2.jar to D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\lib\commons-cli-1.2.jar
        [copy] Copying 1 file to D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\lib
        [copy] Copying D:\Lab\lib\hadoop\hadoop-1.2.1\lib\commons-lang-2.4.jar to D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\lib\commons-lang-2.4.jar
        [copy] Copying 1 file to D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\lib
        [copy] Copying D:\Lab\lib\hadoop\hadoop-1.2.1\lib\commons-configuration-1.6.jar to D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\lib\commons-configuration-1.6.jar
        [copy] Copying 1 file to D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\lib
        [copy] Copying D:\Lab\lib\hadoop\hadoop-1.2.1\lib\commons-httpclient-3.0.1.jar to D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\lib\commons-httpclient-3.0.1.jar
        [copy] Copying 1 file to D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\lib
        [copy] Copying D:\Lab\lib\hadoop\hadoop-1.2.1\lib\jackson-mapper-asl-1.8.8.jar to D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\lib\jackson-mapper-asl-1.8.8.jar
        [copy] Copying 1 file to D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\lib
        [copy] Copying D:\Lab\lib\hadoop\hadoop-1.2.1\lib\jackson-core-asl-1.8.8.jar to D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\lib\jackson-core-asl-1.8.8.jar
         [jar] Building jar: D:\Lab\ws-back-end\MapReduceTools\build\contrib\eclipse-plugin\hadoop-eclipse-plugin-1.2.1.jar
BUILD SUCCESSFUL
Total time: 6 seconds


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。