В заметке описано как применять Maven для сборки java проектов.
Apache Maven — фреймворк для автоматизации сборки проектов на основе описания их структуры в файлах на языке POM (англ. Project Object Model), являющемся подмножеством XML. Проект Maven издаётся сообществом Apache Software Foundation, где формально является частью Jakarta Project.
Должна появиться информация о версиях Maven, jre и операционной системе, что-то вроде:
Maven создаст вам локальный репозиторий в вашей личной папке, например в каталоге C:\Documents and Settings\username\.m2\repository
Все, Maven готов к работе, можно приступать к созданию приложения.
Итак, допустим нас интересует консольное приложение. В командной строке, в необходимом каталоге выполняем команду Maven:
Теперь мы можем лицезреть довольно наглядную структуру каталогов с говорящими названиями java-app\src\main\java\com\mycompany\app – здесь будут ваши классы, java-app\src\test\java\com\mycompany\app – юнит-тесты, в корне же проекта будет pom.xml файл, который и описывает процесс сборки для Maven.
Сборка проекта
Здесь все просто – выполняем команду
или
в корневом каталоге приложения, там, где находится файл pom.xml. Первая команда скомпилирует ваш проект и поместит его в папку target, а вторая еще и положит его к вам в локальный репозиторий.
Есть полезная функция, наподобие конвеера, то есть можно написать
и Maven сначала очистит папку target проекта, потом соберет его и положит в репозиторий.
Файл pom.xml имеет следующий вид
<groupId> - группа или организация, к которой принадлежит проект. Чаще всего выражается в виде перевернутого наоборот доменного имени
<artifactId> - имя, которое будет передано библиотеке экземпляра(artifact) проекта (к примеру, имя его JAR или WAR файла)
<version> - версия, с которой будет собран проект
<packaging> - как проект должен быть упакован. По умолчанию, с "jar" упаковывается в JAR-файл, "war" - WAR-файл
<artifactId> - необходимая библиотека
<version> - версия необходимой библиотеки
По умолчанию, все зависимости определены как <compile> зависимости. Т.е. они должны быть доступны во время компиляции(а если вы собираете WAR-файл, то в /WEB-INF/lib каталоге). Кроме того, вы можете добавить<scope> элемент, с одним из значений:
provided - зависимости, которые требуются для компиляции кода проекта, но которые будут доступны во время выполнения кода контейнером(например, Java Servlet API)
test - зависимости, которые используются для компиляции и запуска тестов, но не требуемые для сборки или выполнения кода проекта
Apache Maven — фреймворк для автоматизации сборки проектов на основе описания их структуры в файлах на языке POM (англ. Project Object Model), являющемся подмножеством XML. Проект Maven издаётся сообществом Apache Software Foundation, где формально является частью Jakarta Project.
Установка Maven
Последнюю версию всегда можно скачать на странице загрузки на официальном сайте. Просто распаковываем архив в любую директорию. Далее необходимо создать переменную в Path, в которой необходимо указать путь к Maven. Заходим в Коапьютер (правой кнопкой) - Свойства - Дополнительные параметры системы - Переменные среды – в верхнем окошке нажимаем Создать, вводим имя M3_HOME и значение папку установки Maven "d:\apache-maven-3.3.9". Далее там же создаем еще одну переменную M3 со значением %M3_HOME%\bin. Так же убеждаемся, что есть переменная JAVA_HOME с путем к JDK. Ее значение должно быть примерно таким «c:\Java\jdk1.8.0_91\». И наконец в том же окошке создаем/модифицируем переменную Path, в нее необходимо просто написать %M3%, чтобы наша папочка с исполняемым файлом Maven была видна из командной строки. Теперь необходимо проверить работоспособность нашей установки. Для этого заходим в командную строку и вводим командуmvn –version
Должна появиться информация о версиях Maven, jre и операционной системе, что-то вроде:
Apache Maven 3.3.9
Maven home: d:\apache-maven-3.3.9\bin\..
Java version: 1.8.0_91
...
Maven создаст вам локальный репозиторий в вашей личной папке, например в каталоге C:\Documents and Settings\username\.m2\repository
Все, Maven готов к работе, можно приступать к созданию приложения.
Создание приложения из архетипа
На сайте Maven перечислены наиболее популярные архетипы для приложений, но вы можете легко создать свой или найти более специфичный например здесь.Итак, допустим нас интересует консольное приложение. В командной строке, в необходимом каталоге выполняем команду Maven:
mvn archetype:generate
Maven выведит список всех доступных архетипов, их можно фильтровать введя символы из названия. Нас будет интереисовать тип по умолчанию который пододёт для обычного консольного приложения, в этом случае будет выбран архетип maven-archetype-quickstart. Просто нажмем Enter.Maven предложит ввести парметры. Вводим следующее:
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 788:Choose org.apache.maven.archetypes:maven-archetype-quickstart version:1: 1.0-alpha-12: 1.0-alpha-23: 1.0-alpha-34: 1.0-alpha-45: 1.06: 1.1Choose a number: 6: 6Define value for property 'groupId': : com.mycompany.appDefine value for property 'artifactId': : java-appDefine value for property 'version': 1.0-SNAPSHOT: : 1Define value for property 'package': com.mycompany.app: :Confirm properties configuration:groupId: com.mycompany.appartifactId: java-appversion: 1package: com.mycompany.app Y: : y
Теперь мы можем лицезреть довольно наглядную структуру каталогов с говорящими названиями java-app\src\main\java\com\mycompany\app – здесь будут ваши классы, java-app\src\test\java\com\mycompany\app – юнит-тесты, в корне же проекта будет pom.xml файл, который и описывает процесс сборки для Maven.
Сборка проекта
Здесь все просто – выполняем команду
mvn package
или
mvn install
в корневом каталоге приложения, там, где находится файл pom.xml. Первая команда скомпилирует ваш проект и поместит его в папку target, а вторая еще и положит его к вам в локальный репозиторий.
Есть полезная функция, наподобие конвеера, то есть можно написать
mvn clean install
и Maven сначала очистит папку target проекта, потом соберет его и положит в репозиторий.
Файл pom.xml имеет следующий вид
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>java-app</artifactId>
<version>1</version>
<packaging>jar</packaging>
<name>java-app</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
<modelVersion> - версия POM-модели (всегда 4.0.0)<groupId> - группа или организация, к которой принадлежит проект. Чаще всего выражается в виде перевернутого наоборот доменного имени
<artifactId> - имя, которое будет передано библиотеке экземпляра(artifact) проекта (к примеру, имя его JAR или WAR файла)
<version> - версия, с которой будет собран проект
<packaging> - как проект должен быть упакован. По умолчанию, с "jar" упаковывается в JAR-файл, "war" - WAR-файл
<dependency> - этот блок XML объявляет список зависимостей проекта. В частности, он объявляет единственную зависимость от junit библиотеки. В элементе, зависимость определяется через описание трех вложенных элементов:
<groupId> - группа или организация, к которой принадлежит зависимость.<artifactId> - необходимая библиотека
<version> - версия необходимой библиотеки
По умолчанию, все зависимости определены как <compile> зависимости. Т.е. они должны быть доступны во время компиляции(а если вы собираете WAR-файл, то в /WEB-INF/lib каталоге). Кроме того, вы можете добавить<scope> элемент, с одним из значений:
provided - зависимости, которые требуются для компиляции кода проекта, но которые будут доступны во время выполнения кода контейнером(например, Java Servlet API)
test - зависимости, которые используются для компиляции и запуска тестов, но не требуемые для сборки или выполнения кода проекта
После выполнения команды mvn package в консоли получим информацию о течении сборки и компиляции и отработки тестов.
Также в каталоге проекта появится каталог target с откомпилированными классами и тестами, а также jar файл.
Сейчас мы имеем простой проект, единственное от чего он зависит, это от библиотеки junit, которая пока ни где не используется.
Теперь сами добавим зависимость в проект от библиотеки joda-time. Для этого в pom.xml добавим блок в dependicies
<dependency>
<groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.2</version> </dependency>
Также добавим секцию сборки
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>hello.HelloWorld</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
И в классе App поменяем метод main, для использования joda-time
package com.mycompany.app;
import org.joda.time.LocalTime;
/** * Hello world! * */public class App { public static void main( String[] args ) { LocalTime currentTime = new LocalTime(); System.out.println("The current local time is: " + currentTime); System.out.println( "Hello World!" ); }}
выполним
mvn clean package
Теперь файл jar увеличил свой размер, а если посмотреть то внутри него теперь есть библиотека joda-time.
Запустим собранный проект в каталоге target:
java -jar java-app-1.jar
Получим
The current local time is: 15:51:09.028Hello World!
Минимальный набор действий для работы Maven мы изучили, теперь переходим к использованию Maven в Eclipse.
Maven Eclipse
Для работы с Maven в Eclipse необходим плагин. Его можно установить 2-мя путями
Первый
- Открыть Eclipse
- Зайти в Help -> Install New Software...
- Нажать Add кнопку сверху справа
- И добавить пункт "M2Eclipse" с расположением в "http://download.eclipse.org/technology/m2e/releases" или "http://download.eclipse.org/technology/m2e/milestones/1.0"
Нажать OK
- Второй
- Открыть Eclipse
- Перейти в Help - Eclipse Marketplace
- Искать строку Maven
- Нажать "Install" кнопку у "Maven Integration for Eclipse"
- Далее следовать инструкции
После успешной инсталляции
Перейдите в Window - Preferences
В панели слева должен появится пункт Maven. Установка закончена.
Перевод существующего проекта в Maven проект
- Правой кнопкой нажимаем на существующий проект
- Переходим в Configure - Convert to Maven Project
Создание нового проекта- Откроем File - New - Other - Maven - Maven Project
- Далее следуем инструкции и вводим параметры нового проекта
Импорт имеющегося проектаЭто наш случай, т.к. проект уже создан.
- Перейдем Import - Maven - Existing Maven Project
- Указываем каталог с нашим проектом
- Выбираем наш проект и загружаем его
В дереве проектов появится java-appДля запуска его как Maven проекта
Нажмем на проект правой кнопочкойПерейдем Run As - Maven ...В открывшемся окне у кажим в поле goals "package"
Пройдет процесс сборки и в консоле Eclipse появятся сообщения аналогичные тем, что уже были в обычной консоли.Maven NetBeans
NetBeans может автоматически распознавать существующий проект maven. Если у вас есть такой проект, просто используйте диалоговое окно Open Project (который будет вызван с помощью Ctrl-Shift-O сочетание клавиш, значок на панели инструментов или пункта Файл / Открыть меню проекта). Все признанные проекты Maven должны быть отмечены значком типа проекта Maven. При выборе такой папки в файловом броузере, вы получите название проекта и список подпроектов на правой стороне.Откроем наш проект. Перейдем File - Open Project...
Проект появится в дереве объектов.Запустим его нажав Run. В консоле отобразится результат выполнения проекта.
В NetBeans можно связать цели maven со стандартными целями Net Beans.Для этого Правой кнопкой на проекте - Properties - Action и тут настраиваем.
Создание нового проекта в Net Beans.
Выбираем Project From Archetype для того что бы выбрать необходимый архетип.Находим необходимый архетип и продолжаем.Указываем необходимые свойства. И завершаем создание проекта.Ссылки по теме
https://ru.wikipedia.org/wiki/Apache_Maven - Apache Maven
http://maven.apache.org/ - Apache Maven Project
https://habrahabr.ru/post/77382/ - Apache Maven — основы
http://stackoverflow.com/questions/8620127/maven-in-eclipse-step-by-step-installation - Maven in Eclipse: step by step installation
http://www.apache-maven.ru/quick_start.html - Простой пример
https://books.sonatype.com/m2eclipse-book/reference/running-sect-running-maven-builds.html -
Running Maven Builds
http://spring-projects.ru/guides/maven/ - Сборка Java-проекта с использованием Maven
https://books.sonatype.com/m2eclipse-book/reference/creating-sect-importing-projects.html - Importing Maven Projects
https://maven-repository.com/archetypes - List of maven archetypes
http://www.dokwork.ru/2012/09/eclipse-maven.html - Управление зависимостями в eclipse с помощью Maven.
http://www.tutorialspoint.com/maven/maven_eclispe_ide.htm - Import a maven project in Eclipse
http://wiki.netbeans.org/MavenBestPractices - MavenBestPractices
Комментариев нет:
Отправить комментарий