Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Hadoop Wiki" for change 
notification.

The "HadoopUnderEclipseWindows" page has been changed by EdwinChan.
http://wiki.apache.org/hadoop/HadoopUnderEclipseWindows

--------------------------------------------------

New page:
= Building/Testing Hadoop under Eclipse / Windows =

Hadoop builds with Ant, but you can set it up to work under IDEA for testing 
and some iterative development. This does not take away the need to run Ant; 
you just run it side by side.

== Before you begin ==
 * Be on Java6. That's where Hadoop is going.
 * Have the build work on the command line.

== Building ==

 * Create and edit a 'build.properties' file; add the following line
{{{
build.webapps=build/classes/webapps
}}}

 * The above line is required.  The default location, '{{{build/webapps}}}', 
will not work.  {{{StatusHttpServer}}} locates 'webapps' via{{{ 
classloader.getResource("webapps")}}} and it must be in classpath.


 * Do a command line build first, to set up all the output dirs.

== Creating a new module ==
Create a new IDEA module for Hadoop.

=== Source folders ===

{{{
build/src
conf
src/ant
src/contrib/streaming/src/java
src/core
src/examples
src/hdfs
src/mapred
src/native/src
src/tools
}}}
 * Even if you are not working on an area, adding it to the source tree makes 
refactoring and class/method use queries more reliable.
 * Everything under {{{build/}}} goes away on a clean build, and needs to be 
picked up again by resynchronizing IDEA (if it is not automatic)
 * By default, the webapp metadata goes into {{{build/webapps}}}, which is not 
the right place to be picked up by the IDE. Moving it under 
{{{build/resources/}}} is needed to place it somewhere manageable.
 * {{{build/src}}} is required for compiled jsp files.  Unfortunately, there is 
no separated ant task to regenerate them.  The best is running ant command line.
 * {{{conf}}} is required for {{{hadoop-default.xml}}} to be copied to 
{{{build/classes}}}.  {{{Configuration}}} will load {{{hadoop-default.xml}}} as 
a resource via classloader.

=== test source directories ===
{{{
src/test
build/test/src
}}}

 * Exclude stuff under there that you do not need.
 * Like 'Source folders', everything under {{{build/}}} goes away on a clean 
build.  You can re-create it by running 'generate-test-records' ant task.

=== Build Paths ===
Set these to the full path of where Hadoop's Ant build sticks things, such as :
 * Output:  {{{/home/user/hadoop-core/build/classes}}}
 * Test output: {{{/home/user/hadoop-core/build/test/classes}}}

=== Libraries ===
 * everything in the {{{lib/}}} directory.
 * If you have global libraries set up for Log4J, JUnit and Jetty (for 
example), use them and omit the versions in {{{lib/}}}. Do keep in sync with 
library versions, especially that of Jetty.
 * For tests, you need to add everything in the {{{src/test/lib/}}} directory.


== Setting up a test run ==

To run JUnit tests under the IDE, create a new test configuration pointing to 
the chosen tests.
 * Use the classpath and JDK of the Hadoop module.
 * Select the package, class or method containing the chosen tests
 * VM Parameters: you must set up the logging directory
{{{
-Dhadoop.log.dir=/home/user/hadoop-core/build/test/logs
}}}
JRockit users: consider editing {{{conf/log4j.properties}}} to
{{{
log4j.appender.console.layout.ConversionPattern=%-4r %-5p %c %x - %m%n
}}}

This may seem odd, but it eliminated deadlocks in the logging.

Reply via email to