mirror of
https://github.com/apache/sqoop.git
synced 2025-05-02 14:29:25 +08:00

This change removes the ShimLoader and various Shim classes such as CDH3Shim etc. It introduces a couple of new classes - ConfigurationConstants and ConfigurationHelper - that provide a unique place for articulating interface related details such as configuration keys that can likely change from version to version of Hadoop. From: Arvind Prabhakar <arvind@cloudera.com> git-svn-id: https://svn.apache.org/repos/asf/incubator/sqoop/trunk@1149994 13f79535-47bb-0310-9956-ffa450edef68
221 lines
6.4 KiB
Plaintext
221 lines
6.4 KiB
Plaintext
|
|
= Compiling
|
|
|
|
This document explains how to compile Sqoop.
|
|
|
|
////
|
|
Licensed to Cloudera, Inc. under one or more
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
this work for additional information regarding copyright ownership.
|
|
Cloudera, Inc. licenses this file to You under the Apache License, Version 2.0
|
|
(the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
////
|
|
|
|
|
|
== Build Dependencies
|
|
|
|
Compiling Sqoop requires the following tools:
|
|
|
|
* Apache ant (1.7.1)
|
|
* Java JDK 1.6
|
|
|
|
Additionally, building the documentation requires these tools:
|
|
|
|
* asciidoc
|
|
* make
|
|
* python 2.5+
|
|
* xmlto
|
|
* tar
|
|
* gzip
|
|
|
|
Furthermore, Sqoop's build can be instrumented with the following:
|
|
|
|
* findbugs (1.3.9) for code quality checks
|
|
* cobertura (1.9.4.1) for code coverage
|
|
* checkstyle (5.x) for code style checks
|
|
|
|
== The Basics
|
|
|
|
Sqoop is compiled with ant. Type +ant -p+ to see the list of available targets.
|
|
|
|
Type +ant+ to compile all java sources. You can then run Sqoop with +bin/sqoop+.
|
|
|
|
If you want to build everything (including the documentation), type
|
|
+ant package+. This will appear in the
|
|
+build/sqoop-(version)/+ directory.
|
|
|
|
== Testing Sqoop
|
|
|
|
Sqoop has several unit tests which can be run with +ant test+. This command
|
|
will run all the "basic" checks against an in-memory database, HSQLDB.
|
|
|
|
Sqoop also has compatibility tests that check its ability to work with
|
|
several third-party databases. To enable these tests, you will need to install
|
|
and configure the databases, and download the JDBC drivers for each one.
|
|
|
|
=== MySQL
|
|
|
|
Install MySQL server and client 5.0. Download MySQL Connector/J 5.0.8 for
|
|
JDBC. Instructions for configuring the MySQL database are in MySQLAuthTest
|
|
and DirectMySQLTest.
|
|
|
|
=== Oracle
|
|
|
|
Install Oracle XE (Express edition) 10.2.0. Instructions for configuring the
|
|
database are in OracleManagerTest. Download the ojdbc6_g jar.
|
|
|
|
=== PostgreSQL
|
|
|
|
Install PostgreSQL 8.3.9. Download the postgresql 8.4 jdbc driver. Instructions
|
|
for configuring the database are in PostgresqlTest.
|
|
|
|
=== Running the Third-party Tests
|
|
|
|
After the third-party databases are installed and configured, run:
|
|
|
|
++++
|
|
ant test -Dthirdparty=true -Dsqoop.thirdparty.lib.dir=/path/to/jdbc/drivers/
|
|
++++
|
|
|
|
|
|
Note that +sqoop.thirdparty.lib.dir+ can also be specified in
|
|
+build.properties+.
|
|
|
|
== Multiple Hadoop Distributions
|
|
|
|
Sqoop can be compiled against different versions of Hadoop. Both the svn
|
|
trunk of Apache Hadoop, and Cloudera's Distribution for Hadoop (CDH3)
|
|
can be used as the underlying Hadoop implementation.
|
|
|
|
By default, Sqoop will compile against the latest snapshot from Apache
|
|
(retrieved through maven). You can specify the Hadoop distribution to
|
|
retrieve with the hadoop.dist property. Valid values are "apache",
|
|
"apache21", or "cloudera":
|
|
|
|
++++
|
|
ant jar -Dhadoop.dist=apache # Uses the nightly build of "trunk"
|
|
ant jar -Dhadoop.dist=apache21
|
|
ant jar -Dhadoop.dist=cloudera
|
|
++++
|
|
|
|
To switch between builds, you will need to clear Ivy's dependency
|
|
cache: +ant veryclean+
|
|
|
|
== Code Quality Analysis
|
|
|
|
We have three tools which can be used to analyze Sqoop's code quality.
|
|
|
|
=== Findbugs
|
|
|
|
Findbugs detects common errors in programming. New patches should not
|
|
trigger additional warnings in Findbugs.
|
|
|
|
Install findbugs (1.3.9) according to its instructions. To use it,
|
|
run:
|
|
|
|
++++
|
|
ant findbugs -Dfindbugs.home=/path/to/findbugs/
|
|
++++
|
|
|
|
A report will be generated in +build/findbugs/+
|
|
|
|
=== Cobertura
|
|
|
|
Cobertura runs code coverage checks. It instruments the build and
|
|
checks that each line and conditional expression is evaluated along
|
|
all possible paths.
|
|
|
|
Install Cobertura according to its instructions. Then run a test with:
|
|
|
|
++++
|
|
ant clean
|
|
ant cobertura -Dcobertura.home=/path/to/cobertura
|
|
ant cobertura -Dcobertura.home=/path/to/cobertura \
|
|
-Dthirdparty=true -Dsqoop.thirdparty.lib.dir=/path/to/thirdparty
|
|
++++
|
|
|
|
(You'll need to run the cobertura target twice; once against the regular
|
|
test targets, and once against the thirdparty targets.)
|
|
|
|
When complete, the report will be placed in +build/cobertura/+
|
|
|
|
New patches should come with sufficient tests for their functionality
|
|
as well as their error recovery code paths. Cobertura can help assess
|
|
whether your tests are thorough enough, or where gaps lie.
|
|
|
|
=== Checkstyle
|
|
|
|
Checkstyle enforces our style guide. There are currently a very small
|
|
number of violations of this style in the source code, but hopefully this
|
|
will remain the case. New code should not trigger additional checkstyle
|
|
warnings.
|
|
|
|
Checkstyle does not need to be installed manually; it will be retrieved via
|
|
Ivy when necessary.
|
|
|
|
To run checkstyle, execute:
|
|
|
|
++++
|
|
ant checkstyle
|
|
++++
|
|
|
|
A report will be generated as +build/checkstyle-errors.html+
|
|
|
|
|
|
== Deploying to Maven
|
|
|
|
To use Sqoop as a dependency in other projects, you can pull Sqoop into your
|
|
dependency management system through Maven.
|
|
|
|
To install Sqoop in your local +.m2+ cache, run:
|
|
|
|
++++
|
|
ant mvn-install
|
|
++++
|
|
|
|
This will install a pom and the Sqoop jar.
|
|
|
|
To deploy Sqoop to a public repository, use:
|
|
|
|
++++
|
|
ant mvn-deploy
|
|
++++
|
|
|
|
By default, this deploys to repository.cloudera.com. You can choose
|
|
the complete URL to deploy to with the +mvn.deploy.url+ property.
|
|
By default, this deploys to the "snapshots" repository. To deploy to
|
|
"staging" or "releases" on repository.cloudera.com, set the
|
|
+mvn.repo+ property accordingly.
|
|
|
|
== Releasing Sqoop
|
|
|
|
To build a full release of Sqoop, run +ant release -Dversion=(somever)+.
|
|
This will build a binary release tarball and the web-based documentation
|
|
as well as run a release audit which flags any source files which may
|
|
be missing license headers.
|
|
|
|
(The release audit can be run standalone with the +ant releaseaudit+
|
|
target.)
|
|
|
|
You must set the +version+ property explicitly; you cannot release a
|
|
snapshot. To simultaneously deploy this to a maven repository, include
|
|
the +mvn-install+ or +mvn-deploy+ targets as well.
|
|
|
|
|
|
== Using Eclipse
|
|
|
|
Running +ant eclipse+ will generate +.project+ and +.classpath+ files that
|
|
will allow you to edit Sqoop sources in Eclipse with all the library
|
|
dependencies correctly resolved. To compile the jars, you should still
|
|
use ant.
|
|
|