IDE Setup
- Download the IntelliJ Community Edition from http://www.jetbrains.com/idea/download/
- Import settings into IntelliJ as explained here:
- Coding Standards
- Set Imports: Preferences -> Code Style -> Java -> Imports. Uncheck "Use fully qualified class names in javadocs"
Setup command line tools and Node
On Mac, using Homebrew:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" brew install git brew install maven brew install node.js
On Linux, using apt:
sudo apt update sudo apt-get install git sudo apt-get install maven sudo apt-get install nodejs
Make sure git is version 1.8.x or greater installed on your machine:
$ git --version git version 2.8.2
Please refer to Build System & CI on how to setup building of CDAP.
Creating an IntelliJ project
- Clone the CDAP project, if not done already
git clone git@github.com:cdapio/cdap.git
- Open IntelliJ and import the CDAP project
- Go to menu
File -> Import Project ...
- Select the
pom.xml
under the CDAP directory - Check
Import Maven projects automatically
andAutomatically download: Sources, Documentations
boxes in theImport Project from Maven
popup. - Click next and the new CDAP project will be created.
- Go to menu
Setting up Checkstyle in IntelliJ
For more information on the rules enforced by checkstyle, see Java Coding Standards.
Setting up Auto Copyright Header in IntelliJ
In IntelliJ, do this:
- Go to menu
IntelliJ IDEA -> Preferences…
- Expand the
Copyright
setting on the left (underProject Settings
) - Select
Copyright Profiles
and add a new Copyright Profile (there is a+
button in the top-middle) - Give the profile a name (e.g. Cask Apache v2)
Paste the following text to the Copyright text box
Copyright © $today.year Cask Data, Inc. Licensed 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.
- In the
Allow replacing copyright if old copyright contains
box, enterCopyright
. - Click on
Copyright
on the left again and add a new scope ofAll
with the copyright profile added in above step. - Note: if there is an existing copyright in a file, and you are modifying the file (rather than completely replacing it), extend the copyright rather than replacing it:
"Copyright © 2014" becomes Copyright © 2014-2016" (or similar).
Build
Git clone the CDAP repository and the Hydrator plugins:
git clone git@github.com:cdapio/cdap.git
Now build using maven:
cd cdap mvn clean package -DskipTests
If you get compile errors similar to this one:
Exception in thread "main" java.lang.NoSuchMethodError: java.nio.ByteBuffer.mark()Ljava/nio/ByteBuffer; at org.eclipse.aether.connector.basic.ChecksumCalculator.update(ChecksumCalculator.java:202)
this is likely due to the version of maven that does not work properly with latest Java versions. Upgrading to maven 3.6.1 will most likely fix the problem.
Build and run Local Standalone CDAP
Git clone the CDAP repository (if you haven't yet), and the Hydrator plugins:
git clone git@github.com:cdapio/cdap.git git clone git@github.com:cdapio/hydrator-plugins.git
First build the plugins:
cd hydrator-plugins git submodule update --init --recursive --remote mvn clean package -DskipTests
Then build the CDAP sandbox, including the plugins:
cd cdap MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=128m" mvn clean package -pl cdap-standalone,cdap-app-templates/cdap-etl -am -amd -DskipTests -P templates,dist,release,unit-tests -Dadditional.artifacts.dir=<path to hydrator-plugins> cd cdap-standalone/target unzip cdap-sandbox-<version>-SNAPSHOT.zip cd cdap-sandbox-<version>-SNAPSHOT cd bin ./cdap sandbox start
- The UI runs on localhost:11011
- Wrangle a sample file, build a pipeline, run it.