Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Start here if you are setting up a brand new development environment, or want to reconfigure your environment from scratch.

Requirements:

The instructions below assume you already have available:

  • A recent version of IntelliJ. These steps have been validated on IntelliJ 2019.1 with Beam IntelliJ 2020.2.14-SNAPSHOT2

  • JDK 1.8 installed and configured in IntelliJ

  • A local git clone of the apache/beam repository in your home directory ("~/beam")

  • ChromeDriver installed and running (chromedriver --port=4444)
  • Flutter installed
  • Dart installed (version >=3.0.2 <4.0.0)
  • The script local-env-setup.sh (Located at the root of the project)ran before importing the project

To set up your IntelliJ project:

...

  • closing your project File |

...

  • Close Project.

...

In the New Project wizard, select Empty Project and click Next.

...

  • Then click Open from the splash page to open a new project (Depending on what version of IntelliJ you may need to find an option to "Import project" instead)
  • Image Added
  • Select the settings.gradle.kts in the root of your beam git repo
  • Image Added


You shouldn't need to modify the project settings. But you should double check on the Java SDK version. File → Project Structure Project → SettingsThis will create the initial project and bring up the Project Structure settings.

  1. In the Project pane, set the Project SDK to "1.8", and select Apply.

  2. In the Modules pane, click the + and select Import Module. Select your beam repository ("~/beam") and select OK.

  3. In the Import Module wizard, select Import module from external model, then select Gradle. Then select Next.

  4. On the next screen, ensure that Create separate module per source set and Use default gradle wrapper (recommended) are selected, and keep the rest of the default values. Then select Finish.
    Image Removed

  5. In the Problems pane, ensure there are no issues listed, then select Apply and OK.

Note: If the 1.8 SDK is not displayed, Download Java 8 and extract it (to any location) from the tar.gz option on the Oracle website.

Then add it under Platform Settings → SDKs-> + icon. (Removing other SDKs if you don't need them will help eliminate potential issues, but isn't required).

Image Added

(Also set it up so that java -version uses this SDK on the command line. By setting up your PATH and JAVA_HOME properly to refer to the same location (And remove other java installation files, if necessary))

Double check these settings (but they shouldn't need to change) This will close the wizard and cause IntelliJ to begin syncing project structure in the background. Continue configuring the IDE while the project syncs:

  1. Open File | Settings... In left pane, navigate to Build, Execution, Deployment | Build Tools | Gradle | Runner. Select Delegate IDE build/run actions to gradle, and Run tests using: Gradle Test Runner. Then select Apply and OK.

  2. Open View | Tool Windows | Gradle to open the Gradle pane.

...

You may also want to setup a specialized environment for the Beam modules you're working on:

Children Display


Make sure to set the formatting options. Otherwise IntelliJ will make unnecessary changes.

File → Settings → Editor → Code Style → Java → Tabs and Indents

Make sure the settings match below:

Image Added

Also disable "*" style imports

File → Settings → Editor → Code Style → Java → Imports

Set Class count to use import with '*'; to 999

Set Names count to use static import with '*'; to 999


Image Added

Issues when building:

When building the project with IntelliJ, you may encounter some issues, here is the fix for each issue:

Flutter finished with non-zero exit value 1:

Image Added

When you get this issue, you should make sure that ChromeDriver is installed and running with the command chromedriver --port=4444 and duplicate or rename the file config.example.dart to config.g.dart in the folder playground/frontend/lib.

If you want to see exactly what cause the issue, you can ran just the task that failed. For this example, you could ran the task as the following:  ./gradlew integrationTest_standalone_change_example_sdk_run and see the error message.

If you got as an error message the following, then you should only rename the file config.example.dart to config.g.dart

Image Added

If you got this error message, then you should run ChromeDriver with the following command chromedriver --port=4444

Info
titleChromeDriver

Note: You should keep ChromeDriver running until the build is finished.

Image Added

Cannot find symbol class Module:

if you got this error, you can try following solutions:

  1. Make sure to set the language as the following screen shot (The class Module is only available starting from Java 9+) 
    Image Added
  2. Clean & rebuild the project
  3. Try invalidating the IntelliJ cache and restarting the IDE, using File > Invalidate caches/ restart

  4. Delete the .idea  & .gradle project and rebuild or reimport the project

Can't resolve generated AutoValue classes AutoValue_*:

To fix this issue, you should enable annotation processing in IntelliJ. For that, you will need to go 

File → Settings → Build, Execution, Deployment → Compiler → Annotation Processors

And check "Enable annotation processing" as in the following image.

Image Added

After that, you will need to run the build of that specific module. If for example, you want to work on "ElasticsearchIO", you will need to open gradle sidebar, 

Image Added

beam → Tasks → sdks → io → elasticsearch

Image Added