Сборка Java-проекта с использованием Maven
Этот урок освещает создание вами простого Java-приложения с использованием Maven.
Что вы создадите
Вы создадите простое приложение и соберете его с помощью Maven.
Что вам потребуется
- Примерно 15 минут свободного времени
- Любимый текстовый редактор или IDE
- JDK 6 и выше
Как проходить этот урок
Как и большинство уроков по 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
Внутри src/main/java/hello директории вы можете создать любые Java-классы, какие вы хотите. Для простоты и согласованности с остальной частью урока, Spring рекомендует вам создать два класса: HelloWorld.java и Greeter.java .
package hello; public class HelloWorld < public static void main(String[] args) < Greeter greeter = new Greeter(); System.out.println(greeter.sayHello()); >>
package hello; public class Greeter < public String sayHello() < return "Hello world!"; >>
Теперь, когда у вас есть проект, который вы можете собрать с Maven, вам нужно установит сам Maven.
Maven можно получить, скачав zip-файл с maven.apache.org/download.cgi. Необходимы только бинарные файлы, так что ищите ссылку на архив с именем apache-maven-version-bin.zip или apache-maven-version-bin.tar.gz.
Распакуйте архив и добавьте путь к каталогу bin в переменную окружения path.
Чтобы протестировать правильность установки Maven, запустите в командной строке:
mvn -v
Если всё было сделано правильно, то вы увидите сообщение примерно такого содержания:
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 07:51:28-0600) Maven home: /usr/share/maven Java version: 1.7.0_09, vendor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre Default locale: en_US, platform encoding: UTF-8 OS name: "mac os x", version: "10.8.3", arch: "x86_64", family: "mac"
Теперь у вас есть установленный Maven.
Создание простой сборки Maven
Теперь, когда Maven установлен, вам необходимо создать определение Maven-проекта. Maven-проекты определяются как XML-файлы с названием pom.xml. Помимо всего прочего, этот файл определяет имя проекта, версию, а также зависимости от сторонних библиотек.
Создайте файл с названием pom.xml в корневом каталоге проекта и наполните его следующим содержанием:
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
org.springframework
gs-maven
jar
0.1.0
org.apache.maven.plugins
maven-shade-plugin
2.1
package
shade
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
hello.HelloWorld
За исключением дополнительного элемента , это простейший из pom.xml файлов, необходимый для сборки Java проекта. Он включает следующие детали конфигурации проекта:
- — версия POM-модели (всегда 4.0.0)
- — группа или организация, к которой принадлежит проект. Чаще всего выражается в виде перевернутого наоборот доменного имени
- — имя, которое будет передано библиотеке экземпляра(artifact) проекта (к примеру, имя его JAR или WAR файла)
- — версия, с которой будет собран проект
- — как проект должен быть упакован. По умолчанию, с «jar» упаковывается в JAR-файл, «war» — WAR-файл
Когда речь заходит о выборе схемы управления версиями, Spring рекомендует [семантическое управление версиями] semver.org подход.
На данном этапе мы имеем минимальное, но уже рабочее определение Maven-проекта.
Сборка Java кода
Теперь все готово для сборки проекта Maven’ом. Вы можете выполнить несколько этапов жизненного цикла сборки, включая компиляцию кода, создание библиотеки пакета(такого, как JAR-файл) и установку библиотеки в локальный репозиторий Maven зависимостей.
Попробуйте собрать, выполнив команду, приведенную ниже:
mvn compile
Этим вы запустите Maven, передав ему указание на выполнение задачи compile. Когда он закончит, вы должны найни скомпилированные .class файлы в target/classes директории.
Вряд ли вы захотите распостранять или работать напрямую с .class файлами, поэтому вам полее подойдет выполнение задачи package:
mvn package
Задача package включает компиляцию вашего Java кода, запуск тестов, а в конце упаковывает в JAR-файл в target директории. Название JAR-файла будет основано на и . К примеру, с минимальным pom.xml(см. выше), JAR-файл будет иметь название gs-maven-initial-0.1.0.jar.
Если вы изменили значение
Maven также хранит репозиторий зависимостей на вашей локальной машине(обычно в .m2/repository директории в вашей домашней папке) для быстрого доступа к зависимостям проекта. Если вы хотите добавить JAR-файл вашего проекта в локальный репозиторий, тогда вам необходимо выполнить задачу install :
mvn install
Задача install включает компиляцию, тестирование, упаковку кода проекта, а затем копирование в локальный репозиторий, тем самым другие проекты смогут ссылаться на него как на зависимость.
Говоря о зависимостях, пришло время объявлять зависимости в Maven сборке.
Объявление зависимостей
Простой «Hello World» пример полностью автономный и не зависит от каких-либо дополнительных библиотек. Однако, большинство приложений зависит от внешних библиотек, с реализацией распостраненного и/или сложного функционала.
К примеру, предположим, что в дополнение к «Hello World!» вы хотите, чтобы приложение печатало текущую дату и время. Вы могли бы использовать функциональность из стандартных(native) Java библиотек, но мы можем сделать это и другими интересными способами, например с помощью Joda Time библиотеки.
Для начала, изменим HelloWorld.java , как показано ниже:
package hello; import org.joda.time.LocalTime; public class HelloWorld < public static void main(String[] args) < LocalTime currentTime = new LocalTime(); System.out.println("The current local time is: " + currentTime); Greeter greeter = new Greeter(); System.out.println(greeter.sayHello()); >>
Здесь HelloWorld использует Joda Time LocalTime класс для получения и печати текущего времени.
Если бы вы запустили mvn compile для сборки проекта сейчас, то получили бы ошибку сборки, потому что вы не объявили Joda Time компилируемую зависимость в сборке. Вы можете это исправить, добавив следующие строки в pom.xml(в пределах элемента):
joda-time
joda-time
2.2
Этот блок XML объявляет список зависимостей проекта. В частности, он объявляет единственную зависимость от Joda Time библиотеки. В элементе, зависимость определяется через описание трех вложенных элементов:
- — группа или организация, к которой принадлежит зависимость.
- — необходимая библиотека
- — версия необходимой библиотеки
По умолчанию, все зависимости определены как зависимости. Т.е. они должны быть доступны во время компиляции(а если вы собираете WAR-файл, то в /WEB-INF/lib каталоге). Кроме того, вы можете добавить элемент, с одним из значений:
- provided — зависимости, которые требуются для компиляции кода проекта, но которые будут доступны во время выполнения кода контейнером(например, Java Servlet API)
- test — зависимости, которые используются для компиляции и запуска тестов, но не требуемые для сборки или выполнения кода проекта
Сейчас, если вы выполните mvn compile или mvn package , Maven должен будет разрешить Joda Time зависимость из Maven Central репозитория и успешно собрать проект.
Здесь полная версия pom.xml :
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
org.springframework
gs-maven
jar
0.1.0
joda-time
joda-time
2.2
org.apache.maven.plugins
maven-shade-plugin
2.1
package
shade
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
hello.HelloWorld
Полная версия pom.xml использует Maven Shade Plugin как удобный инструмент для создание выполняемого JAR-файла. Целью данного урока является показать, как начать работать с Maven, не используя, в частности, этот плагин.
Итог
Поздравляем! Вы создали простой, но эффективный файл сборки Maven для сборки Java проектов.
С оригинальным текстом урока вы можете ознакомиться на spring.io.
Руководство по Создание приложения Scala Maven для Apache Spark в HDInsight с помощью IntelliJ
Из этого руководства вы узнаете, как создать приложение Apache Spark на языке Scala в Apache Maven с помощью IntelliJ IDEA. В примере из этой статьи в качестве системы сборки используется Apache Maven, а в качестве основы используется существующий архетип Maven для Scala, предоставляемый IntelliJ IDEA. Создание приложения Scala в IntelliJ IDEA включает в себя следующие этапы:
- использование Maven в качестве системы сборки;
- обновление файла объектной модели проектов для разрешения зависимостей модуля Spark;
- написание приложения на языке Scala;
- создание JAR-файла, который можно отправить в кластеры HDInsight Spark;
- запуск приложений с помощью Livy в кластере Spark.
В этом руководстве описано следующее:
- Установка подключаемого модуля Scala для IntelliJ IDEA
- Разработка приложения Scala Maven с помощью IntelliJ.
- Создание автономного проекта Scala
Предварительные требования
- Кластер Apache Spark в HDInsight. Инструкции см. в статье Начало работы. Создание кластера Apache Spark в HDInsight на платформе Linux и выполнение интерактивных запросов с помощью SQL Spark.
- Комплект разработчика Oracle Java. В этом руководстве используется Java версии 8.0.202.
- Java IDE. В этой статье используется среда IntelliJ IDEA версии 2018.3.4.
- Azure Toolkit for IntelliJ. Дополнительные сведения см. в статье Установка набора средств Azure для IntelliJ.
Установка подключаемого модуля Scala для IntelliJ IDEA
Чтобы установить подключаемый модуль Scala, сделайте следующее:
- Откройте IntelliJ IDEA.
- На экране приветствия выберите Configure (Настройка)>Plugins (Подключаемые модули), чтобы открыть окно подключаемых модулей.

- Выберите Установить для Azure Toolkit for IntelliJ.

- Выберите Install (Установить) в области подключаемого модуля Scala в новом окне.

- После успешной установки подключаемого модуля необходимо перезапустить интегрированную среду разработки.
Создание приложения с помощью IntelliJ
- Запустите IntelliJ IDEA и выберите Create New Project (Создать проект), чтобы открыть окно New Project (Новый проект).
- На панели слева выберите Azure Spark/HDInsight.
- В главном окне выберите Spark Project (Scala) (Проект Spark (Scala)).
- Из раскрывающегося списка Build tool (Инструмент сборки) выберите одно из следующих значений:
- Maven для поддержки мастера создания проекта Scala.
- SBT для управления зависимостями и создания проекта Scala.

| Свойство | Описание |
|---|---|
| Имя проекта | Введите имя. |
| Расположение проекта | Введите расположение для сохранения проекта. |
| Project SDK (Пакет SDK проекта) | При первом использовании IDEA это поле будет пустым. Выберите New. (Создать. ) и перейдите к JDK. |
| Версия Spark | Мастер создания интегрирует правильную версию пакетов SDK для Spark и Scala. Если используется версия кластера Spark более ранняя, чем 2.0, выберите Spark 1.x. В противном случае выберите Spark 2.x. В этом примере используется Spark 2.3.0 (Scala 2.11.8) . |

Создание автономного проекта Scala

- Запустите IntelliJ IDEA и выберите Create New Project (Создать проект), чтобы открыть окно New Project (Новый проект).
- Выберите Maven в левой области.
- Выберите пакет в поле Project SDK (Пакет SDK проекта). Если это поле пусто, щелкните New. (Создать. ) и перейдите к каталогу установки Java.
- Установите флажок Create from archetype (Создать на основе архетипа).
- В списке архетипов выберите org.scala-tools.archetypes:scala-archetype-simple . Этот архетип создает структуру каталога и скачивает зависимости по умолчанию, необходимые для написания программы Scala.
- Выберите Далее.
- Разверните Координаты артефакта. Введите соответствующие значения для параметров GroupId и ArtifactId. Значения Name (Имя) и Location (Расположение) заполнятся автоматически. В этом руководстве используются представленные ниже значения.
- GroupId: com.microsoft.spark.example;
- ArtifactId: SparkSimpleApp.

. image type="content" source="./media/apache-spark-create-standalone-application/configure-maven-download.png" alt-text="Configure Maven for automatic downloads" border="true".
package com.microsoft.spark.example import org.apache.spark.SparkConf import org.apache.spark.SparkContext /** * Test IO to wasb */ object WasbIOTest < def main (arg: Array[String]): Unit = < val conf = new SparkConf().setAppName("WASBIOTest") val sc = new SparkContext(conf) val rdd = sc.textFile("wasb:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv") //find the rows which have only one digit in the 7th column in the CSV val rdd1 = rdd.filter(s =>s.split(",")(6).length() == 1) rdd1.saveAsTextFile("wasb:///HVACout") > >
2.11.8 2.11.8 2.11
org.apache.spark spark-core_$ 2.3.0
Save changes to pom.xml.
- В меню File (Файл) выберите Project Structure. (Структура проекта. ).
- В окне Project Structure (Структура проекта) выберите Artifacts (Артефакты)>символ «плюс» +>JAR>From modules with dependencies. (Из модулей с зависимостями. ).

- В окне Create JAR from Modules (Создание JAR-файла на основе модулей) выберите значок папки в текстовом поле Main Class (Основной класс).
- В окне Select Main Class (Выбор основного класса) выберите класс, который отображается по умолчанию, и щелкните ОК.

- В окне Create JAR from Modules (Создание JAR-файла на основе модулей) выберите вариант extract to the target JAR (Извлечь в целевой JAR-файл) и щелкните ОК. В результате будет создан один JAR-файл, содержащий все зависимости.

- На вкладке Макет выходных данных содержится список всех JAR-файлов, которые включены в проект Maven. Здесь можно выбрать и удалить файлы, от которых не зависит работа приложения Scala. Из создаваемого приложения можно удалить все файлы, кроме последнего (SparkSimpleApp compile output (Выходные данные компиляции SparkSimpleApp)). Выберите JAR-файлы, которые нужно удалить, и щелкните значок минус — .
Убедитесь, что установлен флажок Include in project build (Включить в сборку проекта). Это гарантирует, что JAR-файл будет создаваться при каждом создании и обновлении проекта. Нажмите кнопку Apply (Применить), а затем — ОК. - Чтобы создать JAR-файл, выберите Build (Сборка)>Build Artifacts (Артефакты сборки) >Build (Сборка). Компиляция проекта займет около 30 секунд. Выходной JAR-файл будет создан в разделе \out\artifacts.

Запуск приложения в кластере Apache Spark
Чтобы запустить приложение в кластере, можно использовать следующие методы:
- Скопируйте приложение JAR в большой двоичный объект службы хранилища Azure, связанный с кластером. Вы можете использовать для этого служебную программу командной строки AzCopy. Кроме того, для отправки данных можно использовать множество других клиентов. Дополнительные сведения о них см. в статье Отправка данных для заданий Apache Hadoop в HDInsight.
- Используйте Apache Livy для удаленной отправки задания приложения в кластер Spark. В кластерах HDInsight Spark есть сервер Livy, который использует конечные точки REST для удаленной отправки заданий Spark. Дополнительные сведения см. в статье об удаленной отправке заданий Apache Spark с помощью Apache Livy и кластеров Spark в HDInsight .
Очистка ресурсов
Если вы не собираетесь использовать это приложение в дальнейшем, удалите созданный кластер, сделав следующее:
- Войдите на портал Azure.
- В поле Поиск в верхней части страницы введите HDInsight.
- Выберите Кластеры HDInsight в разделе Службы.
- В списке кластеров HDInsight, который отобразится, выберите . рядом с кластером, созданным при работе с этим учебником.
- Выберите команду Удалить. Выберите ответ Да.

Следующий шаг
Из этой статьи вы узнали, как создать приложение Apache Spark на языке Scala. Из следующей статьи вы узнаете, как запустить это приложение на кластере HDInsight Spark, используя Livy.
Как с помощью maven подключить библиотеку к проекту
Спросите кого-нибудь, для чего вообще нужен Maven — 90 процентов поголовья программистов ответит, что именно для этого и будут во многом правы.
Если в случае с, например, C++ подключение библиотеки к своему проекту — это серьёзный шаг, который гарантированно усложнит сборку до такой степени, что придётся включить инструкции по подключению данной конкретной библиотеки в readme, то в случае с Java это делается легко и непринуждённо — не в последнюю очедь благодаря Maven.
Хочу отметить, что статья предназначена для тех, кто начал изучать java относительно недавно и хотя уже знает из предыдущей статьи, что такое maven — о том, что такое библиотеки, знает не очень хорошо, а как их подключать не знает вообще.
Как добавить в проект новый класс
Для того, чтобы использовать в своём коде какой-нибудь класс, помимо стандартного, нужно этот класс создать, то есть сделать соответствующий файл и написать внутри этого файла соответствующий код.
Свеженаписанный класс должен лежать там же, где и все остальные классы иначе компилятор его не увидит. Теперь, для того, чтобы его использовать, достаточно добавить в использующий его класс соответствующую директиву import.
Предлагаю присутствущим потратить минуту-другую на выражение благодарности капитану Очевидность, а после продолжить чтение.
Как добавить в проект класс, написанный кем-то другим
Ответ, вообще говоря, очевиден — надо скопировать этот класс в свой код.
Кроме того, что немножко менее очевидно, нужно скопировать в свой проект все классы, которые используются классом, ради которого всё затевалось.
Классы, используемые каким-то другим классом, кстати, принято называть зависимостями (dependencies), этого класса.
У такого подхода есть очевидный минус. Для каждого класса надо выискивать зависимости, а потом руками копировать их к себе. Если позже во всей этой куче кода найдётся какой-нибудь баг, то после появления фикса придётся повторить процесс заново.
Как добавить в проект класс, написанный кем-то другим, не копируя его в свой код
Во всех более-менее современных языках программирования эта проблема уже решена.
Всегда можно сказать компилятору, что классы нужно брать не только из директории с проектом, но и из других, указанных программистом директорий. В Java это делается с помощью параметра classpath.
Если вы работаете с Java то понимать, что такое classpath — строго обязательно, но конкретно для того, чтобы добавить к проекту библиотеку с помощью maven, этого знать не нужно. В контексте нашей темы можно считать classpath сущностью, в которой перечислены все места, где компилятор будет искать классы, необходимые приложению. Если какого-нибудь из этих классов нет ни в одном из этих мест, то программа работать не будет.
Теперь для того, чтобы использовать чужой класс, достаточно скачать код с этим классом, и добавить в classpath директорию, в которую скачан этот код.
По сравнению с предыдущим способом это заметный прогресс. Теперь нет никакой необходимости вручную отслеживать все зависимости того единственного класса, который нужен для работы вашего приложения. Для добавки багфиксов и всего такого достаточно просто скачать новую версию кода.
Вот собственно мы и подошли к ответу на вопрос, что такое библиотека.
Что такое библиотека
Библиотекой принято называть тот самый код, корневую директорию которого нужно добавить в classpath. То есть совокупность нужного нам класса и его зависимостей, а также классов, которые не являются зависимостями нужного нам класса, но содержатся в коде.
В случае с Java, код, который мы добавляем в classpath, можно скомпилировать и добавить в classpath уже директорию со скомпилированным кодом.
Ещё можно заархивировать скомпилированный код в формате zip, поменять расширение файла с архивом на jar и добавить в classpath файл уже этот файл. В контексте разработки на Java, jar файл тоже называется библиотекой.
jar файлы не решают ни одной из изложенных выше проблем, но их использование существенно облегчает передачу библиотек между программистами.
Но, есть одна существенная проблема, которую jar файлы тоже никак решить не помогают.
Классы, которые использует библиотека, могут содержаться не в ней, а в какой-нибудь другой библиотеке, которая по аналогии с предыдущим случаем, тоже называется зависимостью.
Как добавить в проект библиотеку, использующую другую библиотеку
Для того, чтобы добавить в проект библиотеку со всеми её зависимостями, придётся эти зависимости скачать и по одной добавить в проект. При обновлении каждой библиотеки зависимости придётся качать заново.
Может случиться так, что при обновлении какой-нибудь зависимости библиотека, класс из которой мы собираемся использовать в своём проекте, перестанет работать корректно — нам придётся внимательно следить за тем, чтобы такого не случилось и ответственно подходить к каждому обновлению, а лучше, обновлять библиотеки только если без обновления нельзя обойтись вообще.
Как убедиться, что обновление зависимости ничего не сломает
Сторого говоря — никак.
Необходимо, конечно, обновить зависимость и запустить юнит тесты. Если они не проходят, то определённо можно сказать, что что-то сломалось.
Если нет, то это является слабым свидетельством, что поломка отсутствует, но ничего не доказывает.
Но положим, что юнит тестам можно доверять. В этом случае при добавлении библиотеки придётся вручную проверить её совместимость с зависимостями запустив прилагаемые юнит тесты и делать это при каждом обновлении. Это, поверьте, мне тяжело.
Для того, чтобы избежать этой нудной и сложной работы, между программистами всего мира существует негласная договорённость. Библиотеки принято версионировать.
При создании библиотеки программист пишет её код, убеждается, что он работает корректно, а потом присваивает этому коду идентификатор, например номер, и после этого делает код доступным для других программистов чтобы они могли использовать эту библиотеку в своём коде.
Если другие программисты находят в библиотеке ошибку, то создатель библиотеки не просто молча её исправляет, а после исправления изменяет идентификатор библиотеки и теперь миру доступно две библиотеки с одинаковым названием, но разными идентификаторами.
Этот идентификатор принято называть версией библиотеки.
Версию библиотеки программист обновляет не только при исправлении ошибок, но и вообще при любом изменении.
Программисты, использующие эту стороннюю библиотеку при создании своих библиотек, или просто программ, указывают в документации не только название, но и версию, с которой их библиотека гарантировано работает корректно.
То есть работу по проверке того, какие версии зависимостей нужно использовать, берёт на себя один человек, остальные просто пользуются плодами его трудов.
Это существенно упрощает ситуацию, но не устраняет необходимости просматривать все зависимости своего кода и зависимости зависимостей для того, чтобы получить полный список библиотек, которые надо подключить к проекту.
При обновлении какой-нибудь из библиотек процесс надо повторить. Это, поверьте мне, мучительно.
Как получить список всех библиотек, нужных проекту и добавить их в проект автоматически
И тут на помощь приходит Maven. Он формализует негласную договорённость между программистами и делает её гласной.
Если для каждой библиотеки есть список зависимостей, с чётко определёнными версиями, то составить список всех нужных проекту библиотек сложности не составляет.
Скопировать эти библиотеки на машину программиста и добавить их в classpath — тоже не высшая математика. Нужно только знать, откуда качать библиотеки и описания их зависимостей, а также в каком формате эти зависимости описаны.
Эти вопросы в Maven успешно решены.
Как подключить библиотеку к Maven проекту
Тут всё в общем-то банально. Библиотека в понимании Maven, является артефактом, нужным для сборки программы.
У каждого артефакта, как мы помним, есть groupId, artifactId и version. Нужно только указать maven, что данный артефакт является зависимостью проекта.
Список зависимостей должен быть обернут тегом dependencies. Каждая отдельная зависимость должна быть обёрнута тегом dependency. Внутри тега dependency в тегах groupId, artifactId и version нужно указать значения соответствующих параметров.
Тут наверное надо дать пример pom.xml с добавленной библиотекой. Вот пример:
4.0.0 com hello-world 1.0-SNAPSHOT org.apache.commons commons-lang3 3.4
Тут мы подключили к проекту библиотеку, с кучей статических методов, выполняющих стандартные задачи. Одной из таких задач является расширение массива и добавление в него дополнительного элемента.
Вот например так:
package com; import static org.apache.commons.lang3.ArrayUtils.*; public class Application < public static void main(String[] argv) < String[] phrase = ; phrase = add(phrase, " "); phrase = add(phrase, "world"); for (String word : phrase) < System.out.print(word); >System.out.println(); > >
Чтобы скомпилировать код надо написать
mvn compile
mvn exec:java -Dexec.mainClass="com.Application"
Этот код выведет Hello world, но, в отличии от предыдущей статьи, уже новым прогрессивным методом. С помощью библиотеки.
Вот собственно и всё.
Зависимости подключённого к проекту артефакта maven найдёт сам, сам составит список всех библиотек, необходимых проекту, включая зависимости зависимостей и зависимости зависимостей зависимостей, сам скачает их на машину, на которой происходит сборка и сам добавит их в classpath.
Это, поверьте мне, прекрасно.
Итого
- Классы, используемые другим классом, называются зависимостями этого класса
- Библиотекой принято называть совокупность классов, предназначенных для решения определённой задачи, и их зависимостей.
- Зависимости классов из библиотеки могут находиться в других библиотеках и тогда эти библиотеки называются её зависимостями.
- В Java скомпилированные классы из библиотеки можно упаковывать в zip архив с расширением jar. jar файлы тоже называются библиотекой.
- Библиотеки, используемые проектом, называются зависимостями проекта. Для подключения зависимости в maven используется тег dependency. Теги dependency должны находиться внутри тега dependencies.
- В Maven библиотека является артефактом, а значит имеет groupId, artifactId и version.
- Чтобы подключить библиотеку к проекту с помощью maven достаточно указать её groupId, artifactId и version.
- Программирование
- Java
- Системы сборки
Как из обычного IDEA-проекта сделать Maven
Разбираемся с самым популярным продуктом для автоматизации сборки и мигрируем без проблем.



Константин Шибков
Преподаватель Skillbox. Пишет про Java, учит Go. Помнит рассвет PHP и как «грабить корованы».
Maven — это инструмент для сборки Java-проектов: компиляции, создания JAR, дистрибутива программы, генерации документации. С простыми проектами можно обойтись и без него — и собирать их в командной строке. Часто так и делают, но если проект большой и сложный, команда сборки выходит очень длинной, поэтому её иногда записывают в bat/sh-скрипт.
Скрипты обычно зависят от платформы. Чтобы избавиться от этой зависимости и упростить работу, используют инструменты для сборки проекта, например Maven.
Миграция на Maven
Из любого стандартного проекта IDEA можно мигрировать на Maven-проект.
В статье используется среда разработки JetBrains IDEA Community 2021.1. Если у вас другая версия, интерфейс может отличаться.
Для этого выполните следующие действия:
- Выберите проект или модуль, который будете добавлять в Maven, — в нашем примере это будет модуль LambdaExpressions.