Creating IntelliJ Projects from Maven

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

External

Internal

Relevance

IntelliJ 14

Overview

This article describes the process of creating an IntelliJ project based on an existing Maven multi-module structure.

Procedure

Import Project -> Select File or Directory to Import

Choose the directory that contains the root pom.xml.

Import project from external model -> Maven

Import Project Main Window

Root directory The project's root directory, the place where the root pom.xml file lives.

Search for projects recursively From IntelliJ documentation: "Select this check box to make import look for the nested pom.xml files". I noticed that even if I don't check it, Maven modules (which have corresponding pom.xml files in sub-directories) are still detected.

What to do: DO NOT CHECK.

Project format ".idea (directory based)" should be the default.

Keep project files in:

From documentation: Select this check box to specify the desired location for storing project and module files. This means the .idea directory and the module files (.iml). If not selected (and no directory specified), the .idea directory is kept in the project's root directory, and the .iml files are kept beside the corresponding pom.xml files. Note that the IntelliJ module descriptor files (.iml) will NOT be maintained under .idea. Also see Project name and Project file location Window.

What to do: DO NOT check, do not change the defaults, otherwise all .iml files will be created in that directory, and this is probably not what you want.

Import Maven projects automatically If checked, IntelliJ will re-import the project automatically every time the pom.xml file(s)(?) is/are changed.

Create IntelliJ IDEA modules for aggregator projects (with 'pom' packaging). Clear this check box to skip creating IntelliJ IDEA modules. You might want to do that if the Maven project you import is an aggregator, and its packaging element has the value pom. By default is enabled. What if I want the behavior for some of them, and I don't for others?

If not checked, IntelliJ won't create an .iml for the root pom.xml, and the Project view looks like this, even if there's a "root" pom.xml that aggregates "ear", "lib" and "war":

ProjectView.png

It's probably a good idea to NOT check it, keeps things simpler. What if the top pom contains dependencies for modules - if the corresponding .iml is not created, then those dependencies are probably not known to IntelliJ. Further experimentation needed.

Create module groups for multi-module Maven projects If checked, a module group will be created from an aggregator Maven project, with nested modules included in the group.

Further experimentation needed.

__Keep source and test folders on reimport__ - If this check box is selected, the source and test folders are kept when you reimport a project. What does this mean?


__Exclude build directory (PROJECT_ROOT/target)__ Enables automatic exclusion of target folders. However if /target contains /target/generated-sources, then /target cannot be excluded since /target/generated-sources is marked as sources. Other subdirectories in /target are excluded.

__Use Maven output directories__ If selected, the build is generated in target, and the results of IntelliJ compilation are reused. However, IntelliJ itself does not reuse the Maven build, and performs the compilation from scratch.


__Generate source folders__

Project name and Project file location Window

Project name The name of the IntelliJ project, the way the project will show up

Internally, it is stored in the .idea/.name file.


Project file location From documentation Specify the location of your project directory where IntelliJ IDEA stores the configuration data for your project and its components.

Other Observations

.iml Module File Names

IntelliJ names the module file .iml using the <artifactId> value of their corresponding pom.xml file.