简化 Hadoop 2.4.1 Eclpse 插件编译【原创】
昨天折腾hadoop2X的eclipse插件,从https://github.com/winghc/hadoop2x-eclipse-plugin把源码搞下来后,很快搞定出来一个,但是。。。New Hadoop Location时,窗口出不来,汗死,原因后面会说明的。源码难下,最后我会附上源码包的。
仔细看了ant和ivy的文件之后,我发现了一个坑爹的现象,编译一个插件,需要ivy么?!
ant用了好久了,还是自己写一个的好。
查看了jar包,都是hadoop安装目录里面存在的,还需要连个毛线的网去检测啊!看了下ivy的调试信息,也就那么些东西,直接干掉ivy!
重新写了个build.xml,只要往目录hadoop2x-eclipse-plugin-master/src/contrib/eclipse-plugin里面一丢,改改前5个属性的值,直接跑“ant jar”就行了。
或者eclipse建立一个普通项目,把
META-INF
resources
src
build.properties
plugin.xml
往项目一丢,再把build.xml丢进去,改了前5个属性值直接跑就行了。
build.xml内容如下
<?xml version="1.0"?>
<project name="eclipse-plugin" default="jar"> <property name="jdk.home" value="G:/jdk/jdk1.6.0" />
<property name="hadoop.version" value="2.4.1" />
<property name="hadoop.home" value="G:/hadoop/hadoop-2.4.1" />
<property name="eclipse.version" value="3.7" />
<property name="eclipse.home" value="G:/MyEclipse10/Common" /> <property name="root" value="${basedir}" />
<property file="${root}/build.properties" /> <property name="name" value="${ant.project.name}" />
<property name="src.dir" location="${root}/src/java" /> <property name="build.contrib.dir" location="${root}/build/contrib" />
<property name="build.dir" location="${build.contrib.dir}/${name}" />
<property name="build.classes" location="${build.dir}/classes" /> <!-- all jars together -->
<property name="javac.deprecation" value="off" />
<property name="javac.debug" value="on" /> <property name="build.encoding" value="ISO-8859-1" /> <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> <path id="project-jars">
<fileset file="${build.dir}/lib/*.jar" />
</path> <target name="init" unless="skip.contrib">
<echo message="contrib: ${name}" />
<mkdir dir="${build.dir}" />
<mkdir dir="${build.classes}" />
<mkdir dir="${build.dir}/lib" />
<copy todir="${build.dir}/lib/" verbose="true">
<fileset dir="${hadoop.home}/share/hadoop/mapreduce">
<include name="hadoop*.jar" />
<exclude name="*test*"/>
<exclude name="*example*"/>
</fileset>
<fileset dir="${hadoop.home}/share/hadoop/common">
<include name="hadoop*.jar" />
<exclude name="*test*"/>
<exclude name="*example*"/>
</fileset>
<fileset dir="${hadoop.home}/share/hadoop/hdfs">
<include name="hadoop*.jar" />
<exclude name="*test*"/>
<exclude name="*example*"/>
</fileset>
<fileset dir="${hadoop.home}/share/hadoop/yarn">
<include name="hadoop*.jar" />
<exclude name="*test*"/>
<exclude name="*example*"/>
</fileset>
<fileset dir="${hadoop.home}/share/hadoop/common/lib">
<include name="protobuf-java-*.jar" />
<include name="log4j-*.jar" />
<include name="commons-cli-*.jar" />
<include name="commons-collections-*.jar" />
<include name="commons-configuration-*.jar" />
<include name="commons-lang-*.jar" />
<include name="jackson-core-asl-*.jar" />
<include name="jackson-mapper-asl-*.jar" />
<include name="slf4j-log4j12-*.jar" />
<include name="slf4j-api-*.jar" />
<include name="guava-*.jar" />
<include name="hadoop-annotations-*.jar" />
<include name="hadoop-auth-*.jar" />
<include name="commons-cli-*.jar" />
<include name="netty-*.jar" />
</fileset>
</copy>
</target> <target name="compile" depends="init" unless="skip.contrib">
<echo message="contrib: ${name}" />
<javac fork="true" executable="${jdk.home}/bin/javac" encoding="${build.encoding}" srcdir="${src.dir}" includes="**/*.java" destdir="${build.classes}" debug="${javac.debug}" deprecation="${javac.deprecation}" includeantruntime="on">
<classpath refid="eclipse-sdk-jars" />
<classpath refid="project-jars" />
</javac>
</target> <target name="jar" depends="compile" unless="skip.contrib"> <pathconvert property="mf.classpath" pathsep=",lib/">
<path refid="project-jars" />
<flattenmapper />
</pathconvert> <jar jarfile="${build.dir}/hadoop-${hadoop.version}-eclipse-${eclipse.version}-plugin.jar" manifest="${root}/META-INF/MANIFEST.MF">
<manifest>
<attribute name="Bundle-ClassPath" value="classes/,lib/${mf.classpath}" />
</manifest>
<fileset dir="${build.dir}" includes="classes/ lib/" />
<fileset dir="${root}" includes="resources/ plugin.xml" />
</jar>
</target> <target name="clean">
<echo message="contrib: ${name}" />
<delete dir="${build.dir}" />
</target> </project>
最前面5个属性中,jdk.home指定编译时用的jdk,hadoop和eclipse版本号是用来给jar起名字的,hadoop.home是hadoop安装目录,会从里面提取需要的文件,eclipse.home是eclipse的安装目录,MyEclipse中是那个Common目录。
原版中坑爹的jar包版本号无视了,MANIFEST.MF的classpath值也懒得去改了,都自动了,虽然自动会多了几个值,但是总比少的好。
又回到最开始的问题,new hadoop location时的窗口问题,是因为少了commons-collections包,所以直接从hadoop安装目录把这个包拉进来打包了,然后问题解决!
用jdk1.6编译了两个插件包,MyEclipse10的和Eclipse4.4的,都能用。至于上传文件时由于当前用户名导致的权限问题,这个就是改配置或改代码的事情了,我是编译前直接在源码里面加了两行,反正插件随便编译一下就有了。

最后附上官方源码,里面原先那个打包好的插件干掉了,都是旧的,还巨大无比!下载源码包
简化 Hadoop 2.4.1 Eclpse 插件编译【原创】的更多相关文章
- hadoop 1.2.1 eclipse 插件编译
hadoop-1.2.1 eclipse插件编译 在ubuntu上进行hadoop相关的开发,需要在eclipse上安装hadoop开发插件.最新释放出的hadoop包含源码的包,以had ...
- hadoop 2.2.0 eclipse 插件编译 及相关eclipse配置图解
https://github.com/winghc/hadoop2x-eclipse-plugin 官网 http://kangfoo.github.io/article/2013/12/build- ...
- Hadoop2.x的Eclipse插件编译与安装
Eclipse的Hadoop插件在开发hadoop应用程序中可以提供一些很方便的操作,可以直接Eclipse中浏览HDFS上的文件,可以直接新建选择MapReduce项目,项目自动包含所有需要的had ...
- Hadoop 2.5.2 eclipse plugin 编译 win7 集成
一.hadoop集群环境配置 参考我的前一篇文章(ubuntu + hadoop2.5.2分布式环境配置 http://www.cnblogs.com/huligong1234/p/4136331 ...
- Hadoop 1.1.2 eclipse plugin 编译 win7 集成
Windows平台上使用ANT编译Hadoop Eclipse Plugin 一.准备工作: 1.安装JDK 下载页面:http://www.oracle.com/technetwork/java ...
- hadoop-eclipse-plugin-2.x.x 插件编译
在网上找的hadoop for eclipse 插件都不能用,决定自己去编译一个.Hadoop 提供了一个 Eclipse 插件以方便用户在 Eclipse 集成开发环境中使用 Hadoop,如管理 ...
- Hadoop-2.3.0的Eclipse插件编译
Hadoop-2.3.0的Eclipse插件编译 #cd /usr/local/src/hadoop2x-eclipse-plugin-master/src/contrib/eclipse-plugi ...
- Hadoop2.2.0 eclipse插件编译及Ecliipse配置说明(图文版)
一.引言: 最近在做一个城商行项目的POC测试it版本,涉及到编译Linux64bti的源码和开发插件使用,作为笔记分享给大家. 二.插件编译 Hadoop2x版本的Eclipse插件已经单独抽取成独 ...
- 简化Hadoop命令
1. 安装客户端(通过端用户可以方便的和集群交互) 2. 简化Hadoop命令 修改~/.bashrcalias hadoop='/home/work/hadoop/client/hadoop-cli ...
随机推荐
- C#函数式编程之递归调用
关于递归相信大家已经熟悉的不能再熟悉了,所以笔者在这里就不多费口舌,不懂的读者们可以在博客园中找到很多与之相关的博客.下面我们直接切入正题,开始介绍尾递归. 尾递归 普通递归和尾递归如果仅仅只是从代码 ...
- 大熊君说说JS与设计模式之------命令模式Command
一,总体概要 1,笔者浅谈 日常生活中,我们在看电视的时候,通过遥控器选择我们喜欢的频道时,此时我们就是客户端的角色,遥控器的按钮相当于客户请求,而具体执行的对象就是命令对象, 命令模式把一个请求或者 ...
- EditPlus不能着色显示SQl语句的问题
说明:今天重装了系统后,从网上安装下载了一个EditPlus阅读代码,发现sql语句是灰色的,不和以前的带有颜色的看着美观了,顿时心里别扭了起来.以为下错了版本,可是换了好几个,都是这样,网上查了一下 ...
- CSS3与页面布局学习总结
目录 一.BFC与IFC 1.1.BFC与IFC概要 1.2.如何产生BFC 1.3.BFC的作用与特点 二.定位 2.2.relative 2.3.absolute 2.4.fixed 2.5.z- ...
- 文件上传小技巧/后端处理【以php示例】
引语:在上一篇文章中说到,在页面中可以用隐藏的方式让你的上传页面看起来漂亮.但是这对于性能来说,并没有什么卵用,那么在后台的处理中,难道就没有一些处理技巧么?所谓后台的技巧,应该要包括上传得快一点,上 ...
- java防止脚本注入,通过拦截器实现
1:利用action过滤 package com.tsou.comm.servlet; import java.util.Enumeration; import java.util.Map; impo ...
- PowerManager和WakeLock的操作步骤
① PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);通过 Context.getSystemServ ...
- linux下安装小鹤双拼-鹤形
首先安装小小拼音.发现小小拼音真是一个良心软件 http://yong.dgod.net/ 进入下载页面.我是下载 解压版的 解压缩后.放在主目录里.可以改成.yong 隐藏起来 安装步骤(前人栽树, ...
- 如何管理和记录 SSIS 各个 Task 的开始执行时间和结束时间以及 Task 中添加|删除|修改的记录数
开篇语 在这篇日志中 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架 我介绍到了包级别的日志管理框架,那么这个主要是针对包这一个层级的 Log 信息,包括包开始执行和结束时间,以 ...
- 家中Win7 安装 Maven的步骤及参考文章
Maven 实战系列之在Windows上安装Maven cy163注:Path中的值: %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32 ...