Maven
IntelliJ IDEA supports a fully-functional integration with Maven that helps you automate your building process. You can easily create a new Maven project, open and sync an existing one, add a Maven support to any existing IntelliJ IDEA project, configure and manage a multi-module project.
You can also create a Maven project and store it in the WSL environment or open it from the WSL file system. For more information, refer to the WSL section.
If you want to use a custom Maven version that is not bundled with IntelliJ IDEA, you need to install it locally.
Create a new Maven project
If no project is currently open in IntelliJ IDEA, click New Project on the Welcome screen. Otherwise, select File | New | Project from the main menu.
Name the new project and change its location if necessary.
Select the Create Git repository to place the new project under version control.
You will be able to do it later at any time.
Select a language that you want to use in your project. Click if you want to add other languages available via plugins.
Select Maven in the list of Build system .
Specify project’s SDK (JDK) or use the default one.
Select Add sample code if you want your project to have a file with a basic code sample.
In Advanced Settings , specify the following Maven coordinates that are added to the pom.xml file:
GroupId — a package of a new project.
ArtifactId — a name of your project.
For more information on Maven coordinates, see Maven naming conventions.
IntelliJ IDEA creates a Maven project with the pom.xml file that includes compiler and target versions of Java, dedicated Maven tool window, and all the necessary dependencies to start your work.
The version of Java specified in the pom.xml file overrides the version specified in the JDK for Importer option, located in the Maven settings.
Create a new project with Maven archetype
Launch the New Project wizard. If no project is currently opened in IntelliJ IDEA, click New Project on the welcome screen. Otherwise, select File | New | Project from the main menu.
Select Maven Archetype from the options on the left.
Using options on the right, configure your project:
Name : specify the name of your project.
Location : specify the location of your project.
Create Git repository :
Select the Create Git repository to place the new project under version control.
You will be able to do it later at any time.
JDK : specify project’s SDK (JDK) or use the default one.
Catalog : specify which Maven repository you want to use in your project.
The internal Maven catalog is a default one. You can also select the local repository that is located in the .m2 directory, or you can select Maven central repository.
You can also click Manage Catalogs and add a custom repository if you need.
Archetype : select the needed Maven archetype. Click Add to specify the custom archetype.
Version : the version is specified automatically.
Additional properties : add additional properties
If you are creating a project using a Maven archetype, IntelliJ IDEA displays the Maven settings that you can use to set the Maven home directory and Maven repositories. Also, you can check the archetype properties.
To modify or add archetype catalogs later in your project, refer to the Archetype Catalogs settings.
Create a Java EE project with Maven as a build tool
Launch the New Project wizard. If no project is currently opened in IntelliJ IDEA, click New Project on the welcome screen. Otherwise, select File | New | Project from the main menu.
Select Java Enterprise from the list of generators.
Leave the default option Maven as your build tool system.
Select additional libraries and frameworks.
Specify your project’s name, location, and artifact coordinates. Click Create .
IntelliJ IDEA creates a Maven project with the dedicated Maven tool window and adds necessary dependencies.
For the more detailed information, refer to Tutorial: Your first Java EE application.
Open an existing Maven project
From the main menu, select File | Open .
Alternatively, click Open on the welcome screen.
If you have some custom plugins that require you to import your project from the IntelliJ IDEA model, press Ctrl+Shift+A and search for the Project from Existing Sources action.
In the dialog that opens, select the pom.xml file of the project you want to open.
In the dialog that opens, click Open as Project .
IntelliJ IDEA opens and syncs the Maven project in the IDE. If you need to adjust importing options when you open the project, refer to the Maven settings. For example, if you have Maven options configured in the maven/config file and want to use them in your project, select the Use settings from .mvn/maven.config option in the Maven setting.
If you have a Maven project with the configured Maven wrapper then IntelliJ IDEA will take the Maven version from the maven.properties file and add it as the Maven home path.
Configure the Maven settings before opening a new project
You can configure IntelliJ IDEA to display Maven settings before you open a new Maven project. (A new Maven project in this case is the existing project that you open in IntelliJ IDEA for the first time.) Since these are application-level settings, they are applied to any new project you open.
On the Welcome screen, select Customize | All Settings .
Alternatively, from the main menu, select File |New Project Setup | Preferences for New Projects .
In the Settings/Preferences dialog, select Build, Execution, Deployment | Build Tools | Maven .
In the Maven settings dialog, select the Show settings dialog for new Maven projects .
Click OK to save the changes.
Next time you open a new project, IntelliJ IDEA displays the Maven Settings dialog where you can specify a location of the local Maven repository and a user settings file.
Add a new Maven module to an existing project
You can add a Maven module to the project in which you are already working.
In the Project tool window, right-click the project folder and select New | Module . Alternatively, from the main menu, select File| New | Module to open the New Module wizard.
If you used main menu to add a module then the process of adding a module is the same as Creating a new Maven project.
If you are adding sub modules by right-clicking the root folder then the process of adding a new module is shorter. You need to specify the name of your module in the Name field. The rest of the information is added automatically and you can use either the default settings or change them according to your preferences.
Configure a multi-module Maven project
You can create a multi-module Maven project in IntelliJ IDEA. The multi-module project is defined by a parent POM file with several sub modules.
If you have the Maven version 3.7 or later installed, IntelliJ IDEA will support importing a project from the MNG-6656 model.
In this case when you open a child POM file in the editor, you don’t have to specify a version inside the parent tags if it is located in the relativePath by default. If you add a dependency to a module in the same project, you don’t have to specify a version of the dependent module.
Create a Maven parent project. IntelliJ IDEA creates a standard Maven layout including an src folder.
In the Project tool window, remove the src folder since you would only need it in the very rare cases. For your general project, you don’t need the src folder for the parent POM.
In the Project tool window, right-click your project (or from the main menu, click File ) and select New | Module to add a sub project.
In the New Module wizard following the instructions on how to add a module, specify the necessary information and click Finish .
The src folder is created automatically and you can open POM and add a packaging that you need. IntelliJ IDEA adds the module to the parent project. IntelliJ IDEA also adds name and the description of the sub project to the parent POM.

In a multi-module project, the parent POM needs to have a pom packaging.
Last, but not least, IntelliJ IDEA adds the description of the parent POM to the sub project’s POM.

You can click in the left gutter to quickly open the parent POM from your sub project.
You can also add dependencies to the parent POM that will be inherited by the sub projects.

Open Maven tool window to see that all changes made in the parent POM are reflected in sub projects.
Access the Maven settings
Use the Maven settings to configure options such as Maven version, local repository, offline mode, and so on.
In the Settings/Preferences dialog ( Ctrl+Alt+S ), go to Build, Execution, Deployment| Maven .
Click on the toolbar, in the Maven tool window to access the Maven settings.
On the Maven settings page, configure the available options and click OK to save the changes.
Use the Maven wrapper or a custom version of Maven
For a custom version, Download the needed Maven version on your computer.
From the main menu select File | Settings/Preferences | Build, Execution, Deployment |Build Tools | Maven .
On the Maven settings page, in the Maven home directory field, specify the location of the Maven custom version installation. For the Maven wrapper, select the use Maven wrapper option from the list. In this case the version of Maven defined in the .mvn/wrapper/maven-wrapper.properties file will be used.
Change the JDK version in a Maven project
There are several places where you can change the JDK version that will affect not only your current project, but the whole application as well.
Change the JDK version in the Project Structure
Changing the JDK version in the Project Structure dialog will only affect the current project.
From the main menu, select File | Project Structure Ctrl+Alt+Shift+S .
In the dialog that opens, in Project SDK , specify the JDK version and click OK to save the changes.
Change the JDK version for the Maven runner
When IntelliJ IDEA runs Maven goals, it will use the JDK version specified for the Maven runner. By default, IntelliJ IDEA uses the project’s JDK.
Changing the JDK for the Maven runner will only affect the current project.
In the Settings/Preferences dialog ( Ctrl+Alt+S ), go to Build, Execution, Deployment | Maven | Runner .
On the page that opens, in the JRE field, select the JDK version.
Change the JDK version for the Maven importer
Changing the JDK version for the Maven importer will affect the whole application since it is a part of the Maven global settings. If you want to use the same JDK version as you use in your project for syncing or resolving dependencies, change the JDK version for the importer.
In the Settings/Preferences dialog ( Ctrl+Alt+S ), go to Build, Execution, Deployment | Maven | Importing .
On the page that opens, in the JDK for importer field, select the same JDK version as you used in the Project Structure and click OK to save the changes.
«Java-проект от А до Я»: Все, что вы хотели знать о Maven. Часть 2

Все о Maven: начало Обожаю заниматься практикой. Вы даже не представляете, как иногда бывает нудно писать про теорию. Тем не менее, без неё никуда. Практика — дело другое, конечно. Сейчас быстро пробежимся по командам, которые я ранее описал, и будем заканчивать)
Настраиваем pom.xml
Подключаем Мавен и проект в целом к IDEA
- Сказать идее, где будут исходники кода, а где будут тесты.
- Добавить мавен проект в идею.
- • src/main/java — Sources
- • src/main/resources — Resources
- • src/test/java — Tests
- • src/test/resources — Test Resources
- • target — Excluded
Пишем исходники и тесты к нашему “проекту”
ImageComparator:

Под это дело создадим тесты. Класс, который тестирует, должен находиться в том же пакете, только в src/test/java. Идея об этом знает, и можно воспользоваться ее возможностями. Для этого на имени класс в самом файле нажимаем мышкой, и на появившейся лампочке выбираем Create test:Нам предложат выбрать настройки для будущего теста. Ничего не ставим, просто жмем OK: alt=»"Java-проект от А до Я": Все, что вы хотели знать о Maven. Часть 2 — 7″ width=»800″ />Для нашего теста возьмем из тестовых картинок image-comparison и положим их в тестовые ресурсы (src/test/resource). После этого напишем два теста. Один будет проверять, что эти две картинки разные. А в другой передадим одинаковую картинку и будем ожидать ответ, что они одинаковые. После получим такой тест: Тесты очень простые, останавливаться на них не буду. Если вам это будет интересно, как-нибудь напишу статью о тестировании (напишите об этом в комментариях).
Сборка Java-проекта с использованием Maven
Этот урок освещает создание вами простого Java-приложения с использованием Maven.
Что вы создадите
Вы создадите простое приложение и соберете его с помощью Maven.
Что вам потребуется
- Примерно 15 минут свободного времени
- Любимый текстовый редактор или IDE и выше
Как проходить этот урок
Как и большинство уроков по Spring, вы можете начать с нуля и выполнять каждый шаг, либо пропустить базовые шаги, которые вам уже знакомы. В любом случае, вы в конечном итоге получите рабочий код.
Чтобы начать с нуля, перейдите в Настройка проекта.
-
и распакуйте архив с кодом этого урока, либо кнонируйте из репозитория с помощью Git: git clone https://github.com/spring-guides/gs-maven.git
- Перейдите в каталог gs-maven/initial
- Забегая вперед, установите Maven
Когда вы закончите, можете сравнить получившийся результат с образцом в gs-maven/complete .
Настройка проекта
Для начала вам необходимо настроить Java-проект перед тем, как собрать его Maven’ом. Т.к. урок посвящен Maven, сделаем проект максимально простым, насколько это возможно.
Создание структуры каталогов
В выбранном вами каталоге проекта создайте следующую структуру каталогов; к примеру, командой mkdir -p src/main/java/hello для *nix систем:
Внутри src/main/java/hello директории вы можете создать любые Java-классы, какие вы хотите. Для простоты и согласованности с остальной частью урока, Spring рекомендует вам создать два класса: HelloWorld.java и Greeter.java .
Теперь, когда у вас есть проект, который вы можете собрать с Maven, вам нужно установит сам Maven.
Maven можно получить, скачав zip-файл с maven.apache.org/download.cgi. Необходимы только бинарные файлы, так что ищите ссылку на архив с именем apache-maven-version-bin.zip или apache-maven-version-bin.tar.gz.
Распакуйте архив и добавьте путь к каталогу bin в переменную окружения path.
Чтобы протестировать правильность установки Maven, запустите в командной строке:
Если всё было сделано правильно, то вы увидите сообщение примерно такого содержания:
Теперь у вас есть установленный Maven.
Создание простой сборки Maven
Теперь, когда Maven установлен, вам необходимо создать определение Maven-проекта. Maven-проекты определяются как XML-файлы с названием pom.xml. Помимо всего прочего, этот файл определяет имя проекта, версию, а также зависимости от сторонних библиотек.
Создайте файл с названием pom.xml в корневом каталоге проекта и наполните его следующим содержанием:
За исключением дополнительного элемента <packaging> , это простейший из pom.xml файлов, необходимый для сборки Java проекта. Он включает следующие детали конфигурации проекта:
- <modelVersion> — версия POM-модели (всегда 4.0.0)
- <groupId> — группа или организация, к которой принадлежит проект. Чаще всего выражается в виде перевернутого наоборот доменного имени
- <artifactId> — имя, которое будет передано библиотеке экземпляра(artifact) проекта (к примеру, имя его JAR или WAR файла)
- <version> — версия, с которой будет собран проект
- <packaging> — как проект должен быть упакован. По умолчанию, с «jar» упаковывается в JAR-файл, «war» — WAR-файл
На данном этапе мы имеем минимальное, но уже рабочее определение Maven-проекта.
Сборка Java кода
Теперь все готово для сборки проекта Maven’ом. Вы можете выполнить несколько этапов жизненного цикла сборки, включая компиляцию кода, создание библиотеки пакета(такого, как JAR-файл) и установку библиотеки в локальный репозиторий Maven зависимостей.
Попробуйте собрать, выполнив команду, приведенную ниже:
Этим вы запустите Maven, передав ему указание на выполнение задачи compile. Когда он закончит, вы должны найни скомпилированные .class файлы в target/classes директории.
Вряд ли вы захотите распостранять или работать напрямую с .class файлами, поэтому вам полее подойдет выполнение задачи package:
Задача package включает компиляцию вашего Java кода, запуск тестов, а в конце упаковывает в JAR-файл в target директории. Название JAR-файла будет основано на <artifactId> и <version> . К примеру, с минимальным pom.xml(см. выше), JAR-файл будет иметь название gs-maven-initial-0.1.0.jar.
Maven также хранит репозиторий зависимостей на вашей локальной машине(обычно в .m2/repository директории в вашей домашней папке) для быстрого доступа к зависимостям проекта. Если вы хотите добавить JAR-файл вашего проекта в локальный репозиторий, тогда вам необходимо выполнить задачу install :
Задача install включает компиляцию, тестирование, упаковку кода проекта, а затем копирование в локальный репозиторий, тем самым другие проекты смогут ссылаться на него как на зависимость.
Говоря о зависимостях, пришло время объявлять зависимости в Maven сборке.
Объявление зависимостей
Простой «Hello World» пример полностью автономный и не зависит от каких-либо дополнительных библиотек. Однако, большинство приложений зависит от внешних библиотек, с реализацией распостраненного и/или сложного функционала.
К примеру, предположим, что в дополнение к «Hello World!» вы хотите, чтобы приложение печатало текущую дату и время. Вы могли бы использовать функциональность из стандартных(native) Java библиотек, но мы можем сделать это и другими интересными способами, например с помощью Joda Time библиотеки.
Для начала, изменим HelloWorld.java , как показано ниже:
Здесь HelloWorld использует Joda Time LocalTime класс для получения и печати текущего времени.
Если бы вы запустили mvn compile для сборки проекта сейчас, то получили бы ошибку сборки, потому что вы не объявили Joda Time компилируемую зависимость в сборке. Вы можете это исправить, добавив следующие строки в pom.xml(в пределах <project> элемента):
Этот блок XML объявляет список зависимостей проекта. В частности, он объявляет единственную зависимость от Joda Time библиотеки. В <dependency> элементе, зависимость определяется через описание трех вложенных элементов:
- <groupId> — группа или организация, к которой принадлежит зависимость.
- <artifactId> — необходимая библиотека
- <version> — версия необходимой библиотеки
По умолчанию, все зависимости определены как <compile> зависимости. Т.е. они должны быть доступны во время компиляции(а если вы собираете WAR-файл, то в /WEB-INF/lib каталоге). Кроме того, вы можете добавить <scope> элемент, с одним из значений:
- provided — зависимости, которые требуются для компиляции кода проекта, но которые будут доступны во время выполнения кода контейнером(например, Java Servlet API)
- test — зависимости, которые используются для компиляции и запуска тестов, но не требуемые для сборки или выполнения кода проекта
Сейчас, если вы выполните mvn compile или mvn package , Maven должен будет разрешить Joda Time зависимость из Maven Central репозитория и успешно собрать проект.
Здесь полная версия pom.xml :
Поздравляем! Вы создали простой, но эффективный файл сборки Maven для сборки Java проектов.