= Compiling using ​IntelliJ IDEA = This describes how to develop and [wiki:DevelopersGuide/Compiling compile] JOSM using [https://www.jetbrains.com/idea/ IntelliJ IDEA] == Getting the source code == 1. Follow the steps in [[Source code#Getthesource]] to get the source code from Subversion. For this guide, assume it is located in a folder `josm-svn`. == Import the project into IntelliJ == 1. Import the project into IntelliJ using the menu: `File` → `New` → `Project from Existing Sources`. Follow the wizard: 1. Navigate to the folder containing the project, and select it. 1. Select `Create Project from existing sources`. [[BR]] [[Image(intellij-from--01.png)]] 1. Give the project a name, and click `Next`. [[BR]] [[Image(intellij-from--01.png)]] 1. IntelliJ auto-detects the folders which contain source code. Click `Next`. [[BR]] [[Image(intellij-from--01.png)]] 1. IntelliJ auto-detects the project libraries. Click `Next`. [[BR]] [[Image(intellij-from--01.png)]] 1. IntelliJ auto-detects a number of project modules. Click `Next`. [[BR]] [[Image(intellij-from--01.png)]] 1. Select a Java SDK, at least version 8. Click `Next`. [[BR]] [[Image(intellij-from--01.png)]] 1. Deselect OSGI automatic configuration. Click `Next`. [[BR]] [[Image(intellij-from--01.png)]] == Building the project == 1. When you are prompted to add IntelliJ project configuration to Subversion, check the box `Don't ask again`, and click `Cancel`. [[BR]] [[Image(intellij-from--01.png)]] 1. IntelliJ will intex the project. [[BR]] [[Image(intellij-from--01.png)]] 1. Open the `Ant` tool window. It contains no configuration yet. [[BR]] [[Image(intellij-from--01.png)]] 1. Click the `+` button to add an Ant configuration file. Select the file `build.xml` [[BR]] [[Image(intellij-from--01.png)]] 1. The Ant tool window should now list Ant tasks. [[BR]] [[Image(intellij-from--01.png)]] 1. Double click the `dist` task. It will build the project. The `Messages` tool window will show the progress and logging output. [[BR]] [[Image(intellij-from--01.png)]] 1. There should now be a built file: `dist/josm-custom.jar`. [[BR]] [[Image(intellij-from--01.png)]] == Running the project == 1. There are no run configurations configured. Click `Add configuration`. [[BR]] [[Image(intellij-from--01.png)]] 1. Click the `+` button to add a new `JAR Application` configuration. [[BR]] [[Image(intellij-from--01.png)]] 1. Give the new configuration a name. [[BR]] [[Image(intellij-from--01.png)]] 1. In the field `Path to JAR`, choose the built Jar file. [[BR]] [[Image(intellij-from--01.png)]] 1. Add a `Before launch` configuration item, `Run Ant target`. [[BR]] [[Image(intellij-from--01.png)]] 1. A window will popup with all the available Ant tasks. Choose `dist`. [[BR]] [[Image(intellij-from--01.png)]] 1. The configuration should now be ready and selected in the project. [[BR]] [[Image(intellij-from--01.png)]] 1. Click the `Run` (play) button. The project should build again, and then run. [[BR]] [[Image(intellij-from--01.png)]] 1. 1. Run ant in the source directory to obtain a `josm-custom.jar` → [[Source code#CompilingusingAnt]] 1. In IntelliJ: File → New → Project from Existing Sources 1. Navigate to the JOSM source code [[BR]] [[Image(intellij-from-sources-01.png)]] 1. [[Image(intellij-from-sources-02.png)]] 1. [[Image(intellij-from-sources-03.png)]] 1. [[Image(intellij-from-sources-04.png)]] 1. [[Image(intellij-from-sources-05.png)]] 1. File → Project Structure * Modules → Sources: Exclude the directory `src/org/apache` [[BR]] [[Image(intellij-exclude-apache.png)]] * Modules → Dependencies: Make sure that `josm-custom` (i.e., the file generated by Ant is listed) * Modules → Dependencies: Add Groovy (you might need to configure that at "Global Libraries") [[BR]] [[Image(intellij-add-groovy.png)]] 1. Run → Edit Configuration * Add an "Application" configuration [[BR]] [[Image(intellij-run-configuration.png)]] Whenever presets, images, styles, or parser definitions change, re-run Ant in order to have those modifications included in `josm-custom.jar`. This is a bit hackish, but works nicely. ☻ = Additional settings = This section describes helpful additional settings for IntelliJ IDEA. == Link ticket references in commit messages == [[Image(intellij-issue-navigation.png)]] → Ticket references in version control log are clickable == Search open issues == [[Image(intellij-task-search.png)]] → Tools → Tasks & Contexts → Open Task