Importing Flink into an IDE

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 contributors are migrating to IntelliJ IDEA.

Importing Flink

Leave the default options and click on “Next” until you hit the SDK section.

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.

Continue by clicking “Next” again and finish the import.

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.

Build the Project (Build -> Make Project)

Checkstyle For Java

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

Install the “Checkstyle-IDEA” plugin from the IntelliJ plugin repository.

Configure the plugin by going to Settings -> Other Settings -> Checkstyle.

In the “Configuration File” pane, add a new configuration using the plus icon:

Set the “Description” to “Flink”.

Select “Use a local Checkstyle file”, and point it to
"tools/maven/checkstyle.xml" within
your repository.

Check the box for “Store relative to project location”, and click
“Next”.

Configure the “checkstyle.suppressions.file” property value to
"suppressions.xml", and click “Next”, then “Finish”.

Select “Flink” as the only active configuration file, and click “Apply” and
“OK”.

Checkstyle will now give warnings in the editor for any Checkstyle
violations.

Once the plugin is installed you can directly import "tools/maven/checkstyle.xml" by going to Settings -> Editor -> Code Style -> Java -> Gear Icon next to Scheme dropbox. This will for example automatically adjust the imports layout.

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

Note Some modules are not fully covered by checkstyle,
which include flink-core, flink-optimizer, and flink-runtime.
Nevertheless please make sure that code you add/modify in these modules still conforms to the checkstyle rules.

Checkstyle For Scala

Enable scalastyle in Intellij by selecting Settings -> Editor -> Inspections, then searching for “Scala style inspections”. Also Place "tools/maven/scalastyle_config.xml" in the "<root>/.idea" or "<root>/project" directory.

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.