IDE Setup

The sections below describe how to import the Flink project into an IDE for the development of Flink itself. For writing Flink programs, please refer to the Java API and the Scala API quickstart guides.

NOTE: Whenever something is not working in your IDE, try with the Maven command line first (mvn clean package -DskipTests) as it might be your IDE that has a bug or is not properly set up.

Preparation

To get started, please first checkout the Flink sources from one of our repositories, e.g.

git clone https://github.com/apache/flink.git

IntelliJ IDEA

A brief guide on how to set up IntelliJ IDEA IDE for development of the Flink core. As Eclipse is known to have issues with mixed Scala and Java projects, more and more contributers are migrating to IntelliJ IDEA.

The following documentation describes the steps to setup IntelliJ IDEA 2016.2.5 (https://www.jetbrains.com/idea/download/) with the Flink sources.

Installing the Scala plugin

The IntelliJ installation setup offers to install the Scala plugin. If it is not installed, follow these instructions before importing Flink to enable support for Scala projects and files:

  1. Go to IntelliJ plugins settings (IntelliJ IDEA -> Preferences -> Plugins) and click on “Install Jetbrains plugin…”.
  2. Select and install the “Scala” plugin.
  3. Restart IntelliJ
  1. Start IntelliJ IDEA and choose “Import Project”
  2. Select the root folder of the Flink repository
  3. Choose “Import project from external model” and select “Maven”
  4. Leave the default options and click on “Next” until you hit the SDK section.
  5. If there is no SDK, create a one with the “+” sign top left, then click “JDK”, select your JDK home directory and click “OK”. Otherwise simply select your SDK.
  6. Continue by clicking “Next” again and finish the import.
  7. Right-click on the imported Flink project -> Maven -> Generate Sources and Update Folders. Note that this will install Flink libraries in your local Maven repository, i.e. “/home/-your-user-/.m2/repository/org/apache/flink/”. Alternatively, mvn clean package -DskipTests also creates the necessary files for the IDE to work with but without installing libraries.
  8. Build the Project (Build -> Make Project)

Checkstyle

IntelliJ supports checkstyle within the IDE using the Checkstyle-IDEA plugin.

  1. Install the “Checkstyle-IDEA” plugin from the IntelliJ plugin repository.
  2. Configure the plugin by going to Settings -> Other Settings -> Checkstyle.
  3. Set the “Scan Scope” to “Only Java sources (but not tests)”.
  4. In the “Configuration File” pane, add a new configuration using the plus icon:
    1. Set the “Description” to “Flink”.
    2. Select “Use a local Checkstyle file”, and point it to "tools/maven/checkstyle.xml" within your repository.
    3. Check the box for “Store relative to project location”, and click “Next”.
    4. Configure the “checkstyle.suppressions.file” property value to "suppressions.xml", and click “Next”, then “Finish”.
  5. Select “Flink” as the only active configuration file, and click “Apply” and “OK”.
  6. Checkstyle will now give warnings in the editor for any Checkstyle violations.

You can also scan an entire module by opening the Checkstyle tools window and clicking the “Check Module” button. The scan should report no errors.

Note Selecting “Check Project” may report some errors from the archetype modules as they are not configured for Checkstyle validation.

Note Some modules use a more strict checkstyle.xml file called strict-checkstyle.xml. You should setup an additional configuration by following the above steps for this file as well and activate it on a per-module basis. To set a per-module checkstyle configuration go to File -> Project Structure. Then select the module for which you want to change the checkstyle configuration in the modules list and change the checkstyle configuration in the Checkstyle tab.

Eclipse

NOTE: From our experience, this setup does not work with Flink due to deficiencies of the old Eclipse version bundled with Scala IDE 3.0.3 or due to version incompatibilities with the bundled Scala version in Scala IDE 4.4.1.

We recommend to use IntelliJ instead (see above)