Table of Contents

  1. What do I need?

  2. What about IDE support?

  3. How do I just build the jars without going through a full unit test cycle?

  4. How do I do a full Distribution style build, including running all the tests?

  5. I don't want to build all the other modules, I'm just interested in the base Hbase 'core' stuff, is there something simpler?

  6. How do I build javadoc only?

  7. How do I run one unit test only?

  8. How do I get full log output from unit tests?

  9. How do I do the equivalent of an "ant clean", or "ant jar", etc., using maven?

  10. How do I try out a jar that is not installed in a maven repository (e.g. a new zookeeper jar)?

  11. How do I add a new dependency to the project?

What do I need?

You need Maven 2.0.9 or greater, I would recommend Maven 2.2 though. Downloads here:

http://maven.apache.org/download.html

Macports (sudo port install maven2), Debian/Ubuntu packaging are available too.

You'll definitely want to setup an environment variable ala:

export MAVEN_OPTS="-Xmx512m"

as there are a few things within the build that require more than the standard JVM memory allows.

What about IDE support?

IntelliJ: Built-in awesomeness. It just works.

Eclipse: Definitely recommend the M2Eclipse plugin here: http://m2eclipse.sonatype.org/. Or, you can have eclipse generate the .classpath and .project for you. This works pretty well. First do $ mvn install or $ mvn -DskipTests install. Then do $mvn eclipse:eclipse. This writes the eclipse files for core and each of the contribs. In eclipse, you'd open new project based off existing sources.

How do I just build the jars without going through a full unit test cycle?

From the top-level directory:

mvn -DskipTests package

you'll find the jars under the 'target' sub-directory of each sub-module, so 'hbase/core/target/hbase-core-0.20.1.jar' is effectively the original 'hbase.jar' produced previously.

How do I do a full Distribution style build, including running all the tests?

From the top-level directory:

mvn install assembly:assembly

In the top-level 'hbase/target' directory you will find a set of tar balls and zip files. the '-bin' contains something akin to the original HBase release tar ball. The -'project' and -'src' are there to provide an archive of the entire Maven project as it stood during release, and a slimmer, source-only bundle respectively.

I don't want to build all the other modules, I'm just interested in the base Hbase 'core' stuff, is there something simpler?

sure, just:

cd core then mvn -DskipTests package

look in the target sub-directory.

How do I build javadoc only?

mvn javadoc:javadoc

How do I run one unit test only?

mvn test -Dtest=<CLASSNAME>

How do I get full log output from unit tests?

mvn test -Dtest.output=true

Test output is located in: core/target/surefire-reports/

How do I do the equivalent of an "ant clean", or "ant jar", etc., using maven?

ant clean

mvn clean # Run mvn -q clean to have it run quietly

ant compile

mvn compile

ant jar

mvn -DskipTests install # Mvn by default runs tests before it makes jar as opposed to ant which does jar first. Both go down into contrib dirs and build jars down in there too. Mvn will actually install the jars into your local mvn repo. This is probably what you want if you want to go on to run hbase

ant test

mvn test

ant test -Dtestcase=TestClient

mvn test -Dtest=TestClient

For more on the mvn lifecycles...

How do I try out a jar that is not installed in a maven repository (e.g. a new zookeeper jar)?

Here is how you'd have it use a zookeeper jar that was added to the ${HBASE_HOME}/lib directory.

Edit the core/pom.xml since its hbase core that depends on zk:

Index: core/pom.xml
===================================================================
--- core/pom.xml (revision 943580)
+++ core/pom.xml (working copy)
@@ -223,6 +223,9 @@
     <dependency>
       <groupId>org.apache.hadoop</groupId>
       <artifactId>zookeeper</artifactId>
+ <scope>system</scope>
+ <!--Go up to the lib dir at ${HBASE_HOME} to find zk jar-->
+ <systemPath>${basedir}/../lib/zookeeper-3.3.1.jar</systemPath>
     </dependency>
 
     <dependency>

How do I add a new dependency to the project?

You need to add the required jars as <dependency> entries to the <dependencies> element of core/pom.xml.

Hbase/MavenPrimer (last edited 2010-09-30 13:50:23 by stack)