Elettracompany.com

Компьютерный справочник
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Maven версия java

Как установить конкретную версию java для Maven

на моей машине у меня установлены две версии java: (1.6 и 1.7, установленные вручную мной). Мне нужны оба для разных проектов. Но для Maven мне нужно 1.7, теперь мой Maven использует версию java 1,6, как я могу установить Maven для использования 1.7?

8 ответов:

Maven использует JAVA_HOME параметр, чтобы найти, какая версия Java он должен работать. Я вижу из вашего комментария, что вы не можете изменить это в настройках.

  • вы можете установить JAVA_HOME параметр непосредственно перед запуском maven (и изменить его обратно, если это необходимо).
  • вы также можете войти в свой mvn (не-Windows)/ mvn.bat / mvn.cmd (windows) и установите свою версию java явно там.

в POM вы можете установить свойства компилятора, например, для 1.8:

добавление моих двух центов и явно предоставление решения.

у меня есть два JDKs, установленных на моей машине Windows — JDK 1.5 и JDK 1.6 .

Мой по умолчанию (и установить в системную переменную среды windows) JAVA_HOME установлено значение JDK 1.5 .

однако у меня есть проект maven, который мне нужно построить (т. е. JBehave учебник Etsy.com) используя JDK 1.6 .

мое решение в этом случае (который работал!), как предложено @DanielBarbarian установить его в mvn.bat .

для некоторых не знакомых с пакетным файлом окна, я просто в основном добавил set JAVA_HOME=

строке после @REM ==== START VALIDATION ==== на mvn.bat (то есть, %MAVEN_HOME%binmvn.bat ):

на windows

если вы не хотите менять свой JAVA_HOME переменная внутри системных переменных.

редактировать mvn.bat файл и добавить строку, как это

это можно сделать после @REM ==== START VALIDATION ==== как упоминалось @Jonathan

На Mac (&Linux ?)

если вы не хотите менять свой JAVA_HOME переменной внутри

вы можете создать

/.mavenrc файл и переопределить ваш JAVA_HOME С помощью java_home tool

Вменяемость Проверить

вы можете убедиться, что все работает нормально, выполнив следующие команды. Версия jdk должна быть другой.

Я совсем недавно, после семи долгих лет с Maven, узнал о цепях инструментов.XML. Maven даже документировал и поддерживает его с 2.0.9 — toolchains documentation

поэтому я добавил набор инструментов.XML-файл в

/.m2 / папка со следующим содержимым:

Это позволяет определить, какие различные JDKs Maven может использовать для построения проекта независимо от JDK Maven работает С. Вроде как при определении JDK на уровне проекта в IDE.

добавление решения для людей с несколькими установленными версиями Java

у нас есть большая кодовая база, большая часть которой находится в Java. Большая часть того, над чем я работаю, написана на Java 1.7 или 1.8. Так как JAVA_HOME статично, я создал псевдонимы в моем .bashrc для запуска Maven с разными значениями:

Это позволяет мне запускать Maven из командной строки на моей машине разработки независимо от версии JDK, используемой в проекте.

чтобы избежать какого-либо влияния на ваш проект и переменные среды, вы можете настроить плагин компилятора Maven только для POM проекта, указав исходную и целевую версию java

одно простое решение проблемы —

JAVA_HOME= / usr / lib/jvm/ java-6-sun / mvn clean install

на Mac, это будет выглядеть примерно так —

JAVA_HOME= / Library/Java/JavaVirtualMachines / jdk1.7.0_21.jdk / Contents / Home / mvn clean install

PS: один особый случай, который я нашел, — это приведенная выше команда, которая не работает на раковине «рыбы». У меня также была доступная оболочка bash, и она отлично работала там. просто используйте команду ‘Баш’, чтобы переключиться в оболочку Bash.

Краткое знакомство с Maven

  • Статьи, 25 февраля 2019 в 14:51
  • Сергей Штукатуров

Maven — инструмент для автоматизации сборки проектов. С ним работают в основном Java-разработчики, хотя есть плагины для интеграции с C/C++, Ruby, Scala, PHP и другими языками. В статье будут рассмотрены особенности и область применения Maven, описан процесс установки и начала работы, а также разобрана структура файла описания проекта.

Назначение и особенности

Собрать на Java проект уровня «Hello, world!» можно и с помощью командной строки. Но чем сложнее разрабатываемое ПО и чем больше оно использует сторонних библиотек и ресурсов, тем сложнее будет команда для сборки. Maven разработан для облегчения этой работы.

Одна из главных особенностей фреймворка — декларативное описание проекта. Это значит, что разработчику не нужно уделять внимание каждому аспекту сборки — все необходимые параметры настроены по умолчанию. Изменения нужно вносить лишь в том объёме, в котором программист хочет отклониться от стандартных настроек.

Ещё одно достоинство проекта — гибкое управление зависимостями. Maven умеет подгружать в свой локальный репозиторий сторонние библиотеки, выбирать необходимую версию пакета, обрабатывать транзитивные зависимости.

Sportmaster Lab, Москва

Разработчики также подчёркивают независимость фреймворка от ОС. При работе из командной строки параметры зависят от платформы, но Maven позволяет не обращать внимания на этот аспект.

При необходимости систему сборки можно настроить под собственные нужды, используя готовые плагины и архетипы. А если ничего подходящего не нашлось — можно написать свои.

В этой статье мы будем работать с Maven с помощью командной строки, однако этот фреймворк также интегрирован в Eclipse, IntelliJ IDEA, NetBeans и другие IDE.

Установка, настройка и создание стандартного проекта

Скачать Maven можно с официальной страницы проекта. Там же вас познакомят с минимальными требованиями — на машине должен быть установлен JDK, а также потребуется свободное место на диске, около 500 мегабайт. Это место нужно не для самой установки, оно будет использовано для создания локального репозитория.

На странице скачивания вы найдёте несколько разных архивов, для первого раза лучше использовать готовые бинарники. Исходники потребуются, если захочется всё сломать покопаться в Maven.

Архив можно распаковать в любое удобное место. После этого нужно добавить путь к папке bin из распакованного архива в переменную среды PATH . В Windows нужно зайти в настройки параметров системы (вызывается комбинацией клавиш Win+Pause или щелчком правой кнопкой мыши по ярлыку «Мой / Этот компьютер» -> «Свойства»), и выбрать пункт «Дополнительные параметры системы». В правом нижнем углу нажмите кнопку «Переменные среды». Выберите переменную PATH , нажмите «Изменить», в открывшемся окне — «Создать» и добавьте путь. Обратите внимание, путь должен вести именно к папке bin .

В ОС на основе Unix переменную среды можно добавить консольной командной:

Проверить, всё ли сделано правильно, можно с помощью консольной команды mvn -v . Вы должны увидеть что-то подобное:

Создаём папку для нового проекта и переходим в неё. Далее создаём новый проект. Для этого в консоли выполните команду:

Выглядит довольно сложно, поэтому разберём её по порядку.

archetype : generate это так называемая цель. Она указывает Maven, что нужно создать проект из архетипа. Дальше с помощью -D мы указываем определённые параметры генерации.

  • groupId = com . mycompany . app указывает на разработчика ПО, там вы можете указать доменное имя своей компании.
  • artifactId = my — app — название проекта. Maven оперирует так называемыми артефактами. Это приложения, плагины, архетипы и другие проекты. И ваша разработка также будет считаться артефактом.
  • archetypeArtifactId = maven — archetype — quickstart указывает, какой архетип использовать в качестве шаблона для создания приложения. Как видите, это тоже артефакт. Указанный архетип создаст простой проект, сгенерирует структуру каталогов и даже заботливо положит в папку исходников программу «Hello, world!», чтобы вам не пришлось самому писать её в двухсотый раз.
  • archetypeVersion = 1.4 указывает на версию артефакта «архетип».
  • interactiveMode = false отключает создание проекта в интерактивном режиме. Вы можете запустить цель archetype : generate без параметров, и Maven предложит установить параметры в процессе генерации. В данном случае нам это не нужно. Кстати, отключить интерактивный режим можно параметром -B . Полный список параметров для mvn можно получить по команде mvn -h .

Выполнив команду, Maven сгенерирует следующую структуру проекта:

Исходники нашего проекта будут лежать в папке src/main/java (и сейчас там уже есть автоматически сгенерированный файл), но нам сейчас интереснее файл pom.xml в корневом каталоге. Это и есть тот самый файл описания проекта, на основе которого осуществляются все операции Maven. Он написан на языке POM, входящим в семейство XML:

Разберёмся, что всё это значит.

Что значат теги в pom.xml

Тег project является базовым и содержит всю информацию о проекте. В заголовке указана информация, необходимая Maven для понимания файла pom.xml . Тег modelVersion указывает на текущую версию POM. Эти два тега обычно генерируются автоматически, менять их не нужно.

Затем идёт информация, формирующая уникальный идентификатор проекта, теги groupId и artifactId . Её мы задавали выше при генерации из архетипа. Тег version тоже входит в эту группу. Он обычно генерируется и обновляется автоматически. После номера версии идёт суффикс -SNAPSHOT . Это означает, что проект находится в стадии разработки. В процессе выпуска ПО фреймворк уберёт этот суффикс, а если разработка продолжится — автоматически увеличит номер версии. Вместе эти три тега позволяют однозначно идентифицировать артефакт.

name содержит отображаемое имя артефакта, а url — ссылку на сайт. Поскольку сайт не задан при генерации, pom.xml содержит напоминание об этом в виде комментария. Кроме того, можно добавить краткое описание в description . Эти три тега зачастую используются при формировании документации.

Дальше мы видим блок properties . Здесь указаны особые настройки, такие как кодировка файла и используемая версия компилятора Java. Без этого блока можно обойтись, положившись на настройки по умолчанию.

Следом идёт очень важный блок dependencies . В нём описываются все используемые в проекте зависимости. Каждую необходимо выделить тегом dependency и указать уникальные идентификационные данные: groupId , artifactId и version . Maven сам подгрузит транзитивные зависимости. Кроме того, с помощью тега scope можно указать этапы, на которых будет использован артефакт. Сейчас в pom.xml всего одна зависимость — артефакт JUnit, библиотека для модульного тестирования на Java, которая будет использоваться только на стадии тестирования.

Кстати, это хороший повод поговорить о жизненном цикле проекта. Maven выполняет сборку последовательными фазами. Приводим их названия на английском, так как они используются в качестве команд.

  1. Проверка — validate . Фреймворк проверяет, корректен ли проект и предоставлена ли вся необходимая для сборки информация.
  2. Компиляция — compile . Maven компилирует исходники проекта.
  3. Тест — test . Проверка скомпилированных файлов. В нашем случае будет использована библиотека JUnit.
  4. Сборка проекта — package . По умолчанию осуществляется в формате JAR. Этот параметр можно изменить, добавив в project тег packaging .
  5. Интеграционное тестирование — integration-test . Maven обрабатывает и при необходимости распаковывает пакет в среду, где будут выполняться интеграционные тесты.
  6. Верификация — verify . Артефакт проверяется на соответствие критериям качества.
  7. Инсталляция — install . Артефакт попадает в локальный репозиторий. Теперь его можно использовать в качестве зависимости.
  8. Размещение проекта в удалённом репозитории — deploy , — финальная стадия работы.

Эти фазы упорядочены и выполняются поочерёдно. Если необходимо собрать проект, система последовательно проведёт оценку, компиляцию и тестирование, и только после этого сборку. Помимо этого есть две фазы, выполняющиеся отдельно, только прямой командой. Это очистка — clean , удаляющая предыдущие сборки, и создание документации для сайта — site .

Закончим рассмотрение pom.xml секцией build . Она не является обязательной, в данном pom.xml в неё включены плагины из архетипа, однако можно обойтись и без них. Плагинов для Maven тысячи, освоившись с применением фреймворка вы сможете сами подобрать себе необходимые.

В проектах чуть серьёзнее, чем вычисление факториала, приходится использовать внешние ресурсы. Maven способен автоматически обрабатывать файлы ресурсов и размещать их в сборке проекта. Для этого их нужно разместить в папке src/main/resources . Файлы будут упакованы с сохранением внутренней структуры каталогов. Если же по какой-то причине нужно переопределить каталог, используйте вложенные теги resources , resource , directory в секции build :

Итак, с файлом описания мы разобрались. Попробуем собрать проект. Для этого перейдём в корневую папку и выполним команду нужной фазы, mvn package . Получим отчёт о сборке:

Теперь в корневом каталоге проекта вы обнаружите папку target, а в ней готовый файл my-app-1.0-SNAPSHOT.jar .

Запустите команду java — cp target / my — app — 1.0 — SNAPSHOT . jar com . mycompany . app . App — вы должны увидеть «Hello World!».

Поздравляем! Вы собрали проект с помощью Maven. Для более детального изучения инструмента советуем обратить внимание на эти книги и материалы.

Maven и java

Сегодня попытаемся понять какую роль играет сборщик приложений maven в java, как он работает и как правильно с ним работать. И конечно же напишем с ним простой пример.

В период изучения программирования наступает момент, когда нужно выйти за рамки разработки простого приложения и начать разрабатывать большие и сложные системы. Стандартного функционала java уже не достаточно и нужно использовать сторонние библиотеки и фреймворки. В такие моменты и нужен maven.

Немного истории для самых познавательных. Когда не было сборщиков проектов — программисты просто качали нужные им библиотеки и подключали их к своему проекту. Проще говоря — брали файл и помещали его в папку своего проекта.

Со временем стало понятно, что делать это не всегда удобно. Да и следить за версиями библиотек очень не просто. Библиотека, которую вы скачали и подключили могла получить обновление и для того, чтобы обновить ее в проекте приходилось качать ее новую версию, удалять старую версию со своего проекта, подключать новую. А если у Вас проект — банковская система, над которой трудятся одновременно 50 программистов — то такой расклад и вовсе выглядел печальным.

Тогда и пришли на помощь сборщики проектов. Больше не нужно было качать и подключать. Достаточно было указать ссылку на библиотеку, ее версию и собрать проект.

Первый сборщик, который я помню и которым даже пользовался был Ant. Его все еще можно увидеть в старых проектах в некоторых компаниях. Если честно, я толком не знаком с ним. Просто довелось немного поработать с очень старым проектом, который собирался с помощью Ant. При желании — можно почитать о нем в Интернете.

После Ant лидерство во главе сборщиков занял Maven. Более того, он удерживает его и по сей день. Сейчас все больше проектов переводят на Gradle, но мавен все еще очень популярный и пользуется спросом. Если Вы читали мои статьи Java web и Spring, то заметили, что все проекты я собираю с помощью maven. Для меня он удобен и простой в использовании.

Теперь попробуем разобрать немного теории.

Maven — инструмент для сборки джава проектов. Помимо подключения сторонних библиотек он используется для компиляции, создания jar, создания дистрибутива программы, генерации документации. Так сказано на официальном сайте Apache Maven.

Maven — инструмент с очень большим функционалом. В данной статье я остановлюсь только на тех моментах, которые мне кажется наиболее востребованы при изучении данного инструмента на начальных этапах.

Костяк мавен это файл pom.xml, который размещается в корне проекта. Из расширения этого файла Вы уже могли догадаться, что его формат xml. Вся его структура состоит из xml разметки.

Файл pom.xml должен иметь определенное оформление и структуру. Предлагаю изучить терминологию maven на примере типичного pom.xml небольшого проекта.

Начнем с самого начала. В самом верху документа указывается что это xml документ, его версия и кодировка:

Далее идет тег project. В него уже и будут помещаться все остальные теги, которые Вы будете создавать.

Информация по Вашему проекту: groupId (имена и структура пакетов), artifactId (название проекта),version (версия вашего приложения),packaging (как будет собран проект) — jar — как обычный джава архив, war — веб архив, для web приложений, name и description — соответственно имя и описание Вашего проекта. Они являются не столь важными и их можно опускать.

В тег properties можно добавлять так называемые свойства. Я еще называю их константы. Здесь можно определить свойство и использовать его далее в документе. Пользоваться свойством нужно по его имени с таким синтаксисом: $

Далее идет тег dependencies — в него помещаются все зависимости проекта: библиотеки, фреймворки, модули, другие проекты. Для добавления зависимости нужно воспользоваться синтаксисом:

На примере выше видно, что первые 3 пункта: groupId, artifactId и version вы сможете получить при нахождении библиотеки. Этот параметр вроде бы от Вас не зависит.

scope — это область видимости нашей библиотеки в проекте. Этот параметр позволяет указать мавену когда и для чего использовать эту зависимость. Всего есть 6 областей видимости:

  • compile — это область видимости по умолчанию. Зависимости с такой зоной видимости будут использоваться и при выполнении и при тестировании и даже при использовании этой зависимости из других проектов.
  • provided — почти как compile. Единственное ее отличие в том, что зависимость с зоной видимости provided не будет добавлена в пакет.
  • runtime — зависимость будет подключаться только во время выполнения кода.
  • test — такой зоной видимости помечаются зависимости для тестов. Например Mockito, JUnit.
  • system — зависимость, которая будет в среде java всегда. Я никогда ее не использовал.
  • import — для импорта зависимостей из других артефактов.

Если такое количество информации изрядно Вас испугало я могу сказать, что большинство библиотек, которые Вы будете подключать идут со всем необходимым набором параметров и scop-ами. Поэтому не нужно переживать и тем более учить все это.

Вроде как минимальный набор параметров файла pom.xml я описал. Теперь продолжим далее.

Тег, который предназначен для подключения плагинов мавен — build. В него нужно добавить plugins, а уже в этот тег конкретный плагин. Синтаксис очень напоминает синтаксис зависимостей. Только в отличие от тега dependency в данному случае нужно использовать plugin. По поводу плагинов скажу то же самое, что говорил выше. Вы будете находить их в сети в зависимости от своих потребностей и нужд. И находить Вы их будете уже в нужном формате.

По большей части работы с pom.xml Вам нужно будет копировать зависимости и плагины из Интернета и просто вставлять их в теги dependencies или plugins соответственно.

С теорией вроде бы все. Теперь перейдем к практической части.

Как уже было сказано maven — это инструмент. И как его использовать это уже выбор разработчика. Полагаю, что 90 процентов читателей работают в intellij idea или eclipse. Эти инструменты разработки имеют встроенную поддержку мавен. И Вам нет необходимости его устанавливать на компьютер.

Когда Вы будете подключать зависимости они будут выкачиваться прямо из Интернета, а встроенные инструменты позволят Вам собирать и запускать проект. Тем более, сейчас такие фреймворки на подобии Spring Boot, которые позволяют запустить веб приложение с минимальным количество настроек и без Tomcat.

Maven также можно установить на свой компьютер. Это позволит создавать и собирать приложения прямо из командной строки. Последнюю версию мавен можно скачать из официального сайта, который я указал выше. Архив можно поместить в любую папку на диске. Далее нужно создать переменную M2_HOME в Path, как Вы это делали при первой установке java. Если не знаете как или забыли, почитайте статью Что нужно чтобы начать программировать на Java. Там Вы найдете пункт про среды окружения. К сожалению, я пишу статью из-под системы линукс и поэтому не смогу показать Вам весь процесс в картинках и детальных объяснениях.

Теперь, чтобы создать maven проект нужно зайти в свою idee (программу для программирования). У Вас это может быть Netbeans, Intellij idea, Eclipse. Как создавать мавен проект в Eclipse написано в статье Простой сайт на java. Воспользуйтесь ею если у Вас Eclipse. Для пользователей Intellij idea принцип создания примерно такой: File->New Project

В окне выбираем Maven и далее нам как и в случае с Eclipse предлагается выбрать архетип. Если собираетесь писать веб приложение — старайтесь выбрать архетип для веб приложения. Если же другое — выбирайте из потребностей. Можно без архетипа. Архетип означает, что структура приложения (размещение, количество папок) будет соответствовать тому типу приложения, архетип которого вы выберете. В теме мавена это для нас не важно.

Я предпочитаю создавать «чистые» приложения, без архетипов. Нажимаем кнопку Next, указываем groupId, artefactId, даем нашему проекту имя и расположение и жмем Finish. После Вы увидите, что создалась структура приложения и в корне лежит файл pom.xml — тот самый, который означает, что приложение использует сборщик проектов maven.

Для того, чтобы скомпилировать код, который вы напишете в своем проекте можно использовать команду maven: mvn clean install. Если Вы пользуетесь инструментом от идеи, можно просто выбрать вкладку мавен в разделе инструментов, далее перейти в lifesycle — > clean. После этого выбрать в той же вкладке install.

Я предпочитаю использовать команды напрямую. Для этого я открываю терминал в корне проекта и пишу: mvn clean install

Если ошибок в коде нет и код успешно компилируется Вы должны увидеть что-то вроде такого:

Команда clean install компилирует проект и собирает его в архив. Для того, чтобы просто скомпилировать проект можно использовать команду mvn clean. Потом для сборки — mvn install.

Я предпочитаю компилировать и собирать проект одной командой mvn clean install.

Теперь Вы знаете для чего используются сборщики проектов, и роль maven в java. Как я уже говорил выше — это не вся информация о данном инструменте, но для понимания и базового пользования этого должно с лихвой хватить.

Как создать исполняемый JAR с помощью Maven

Введение

В этой статье мы рассмотрим упаковку Maven- проекта в файл Jar . Выясним преимущества и недостатки каждого из подходов, применяемых для создания исполняемого файла.

Конфигурация

Чтобы создать исполняемый файл jar , не требуются дополнительные зависимости. Нам нужно просто создать Java-проект Maven с одним классом и методом main(…) .

В приведенном ниже примере мы создаем Java-класс ExecutableMavenJar. Для этого в файл pom.xml нужно добавить следующие элементы:

Удостоверьтесь в том, что в конфигурации задан тип jar . Теперь можно приступить к реализации каждого из подходов.

Ручная настройка

Для этого мы используем плагин maven-dependency-plugin . Сначала скопируем все необходимые зависимости в указанную папку:

Сначала мы задаем цель copy-dependencies , что указывает Maven скопировать эти зависимости в заданный outputDirectory .

В данном случае мы создадим папку с именем libs внутри каталога сборки проекта (обычно это папка target ).

Затем мы создаем исполняемый файл jar с указанными путями к классам и со ссылкой на зависимости, скопированные на первом шаге:

Наиболее важной частью приведенного выше кода является конфигурация manifest . В ней мы добавляем classpath со всеми зависимостями (папка libs/ ), а также предоставляем информацию о главном классе.

Преимущества и недостатки этого подхода:

  • Преимущества — прозрачный процесс, в рамках которого можно прописать каждый шаг.
  • Недостатки — зависимости находятся вне финального файла jar . Поэтому он будет работать только, если папка libs будет доступна и видима для jar-файла.

Apache Maven Assembly Plugin

Плагин Apache Maven Assembly позволяет объединять выходные данные проекта вместе с зависимостями, модулями, документацией и другими файлами в единый пакет.

Основной целью в плагине сборки является single . Она используется для создания любых сборок. Остальные цели устарели и будут удалены в следующей версии плагина.

Рассмотрим конфигурацию, заданную в файле pom.xml :

Как и при ручной настройке, сначала нужно предоставить информацию о главном классе. Но плагин автоматически скопирует все необходимые зависимости в файл JAR .

В descriptorRefs мы указали имя, которое будет добавлено к имени проекта. В нашем случае – это core-java-jar-with-dependencies.jar.

  • Преимущества – зависимости хранятся внутри jar -файла.
  • Недостатки — упрощенный контроль упаковки артефакта. Например, нет поддержки перемещения классов.

Apache Maven Shade Plugin

Плагин позволяет упаковывать артефакт в uber-jar , который включает в себя все зависимости, необходимые для запуска проекта. Кроме того, он поддерживает переименование пакетов некоторых зависимостей.

Рассмотрим приведенную ниже конфигурацию:

В этой конфигурации отмечает все зависимости, которые должны быть упакованы в файл jar .

Затем нам нужно указать реализацию трансформатора . В текущем примере мы использовали стандартную версию. В конце задаем основной класс приложения.

Выходной файл получит название core-java-0.1.0-SNAPSHOT-shaded.jar , где core-java — это имя проекта. За ним следуют версия и имя плагина.

  • Преимущества — зависимости внутри jar- файла, расширенный контроль упаковки артефакта.
  • Недостатки — сложная конфигурация (особенно если необходимо использовать расширенные функции).

One Jar Maven Plugin

Плагин предоставляет собственный загрузчик, который знает, как загружать классы и ресурсы из jar-файлов архива.

Рассмотрим приведенную ниже конфигурацию:

Сначала необходимо указать основной класс и прикрепить все зависимости сборки, используя для этого attachToBuild = true .

Также необходимо задать имя файла для вывода. Цель Maven — это one-jar .

В One Jar зависимости jar не будут расширены в файловую систему во время выполнения.

  • Преимущества — позволяет классам располагаться на верхнем уровне One Jar. Плагин поддерживает внешние jar и собственные библиотеки.
  • Недостатки – не обновляется с 2012 года.

Плагин Spring Boot Maven

Плагин позволяет упаковывать исполняемые архивы jar или war и запустить приложение «на месте». Он поддерживает Maven версии 3.2 или выше. Более подробное описание плагина доступно здесь .

Рассмотрим приведенную ниже конфигурацию:

Между Spring и другими плагинами есть два существенных отличия: цель выполнения называется repackage , а классификатор — spring-boot . Обратите внимание, что плагин можно использовать без Spring Boot.

  • Достоинства – зависимости располагаются внутри jar- файла, его можно запускать в любом доступном месте, улучшенный контроль упаковки артефакта, исключение зависимостей из jar- файла и упаковка war файлов.
  • Недостатки — добавляет ненужные классы, связанные с Spring и Spring Boot.

Веб-приложение с исполняемым Tomcat

В последней части статьи мы рассмотрим упаковку автономного веб-приложения в jar -файл. Но для этого понадобится другой плагин.

Чтобы создать jar-файл, запустите man package, который создаст webapp.jar в каталоге target.

Чтобы запустить приложение, просто введите в консоли: java -jar target / webapp.jar и проверьте результат по адресу: localhost:8080/.

  • Преимущества — наличие одного файла, простота развертывания и запуска.
  • Недостатки — размер файла намного больше.

Обратите внимание на то, что это последняя версия данного плагина, поддерживающая сервер Tomcat7. Чтобы избежать ошибок, обязательно убедитесь в том, что для зависимости Servlets scope задано значение provided. Иначе во время выполнения jar-файла возникнет конфликт:

Заключение

В этой статье мы рассмотрели несколько способов создания исполняемого jar-файла с помощью различных плагинов Maven. Полную реализацию этого руководства вы сможете найти в проектах, опубликованных на Github:

Как проверить? Чтобы скомпилировать проект в исполняемый файл jar , запустите Maven с помощью команды mvn clean package .

Надеемся, что данная статья помогла разобраться в этой теме.

Данная публикация представляет собой перевод статьи « How to Create an Executable JAR with Maven » , подготовленной дружной командой проекта Интернет-технологии.ру

Сборка 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 директории вы можете создать любые 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 в корневом каталоге проекта и наполните его следующим содержанием:

За исключением дополнительного элемента

, это простейший из pom.xml файлов, необходимый для сборки Java проекта. Он включает следующие детали конфигурации проекта:

— как проект должен быть упакован. По умолчанию, с «jar» упаковывается в JAR-файл, «war» — WAR-файл

На данном этапе мы имеем минимальное, но уже рабочее определение Maven-проекта.

Сборка Java кода

Теперь все готово для сборки проекта Maven’ом. Вы можете выполнить несколько этапов жизненного цикла сборки, включая компиляцию кода, создание библиотеки пакета(такого, как JAR-файл) и установку библиотеки в локальный репозиторий Maven зависимостей.

Попробуйте собрать, выполнив команду, приведенную ниже:

Этим вы запустите Maven, передав ему указание на выполнение задачи compile. Когда он закончит, вы должны найни скомпилированные .class файлы в target/classes директории.

Вряд ли вы захотите распостранять или работать напрямую с .class файлами, поэтому вам полее подойдет выполнение задачи package:

Задача package включает компиляцию вашего Java кода, запуск тестов, а в конце упаковывает в JAR-файл в target директории. Название JAR-файла будет основано на и . К примеру, с минимальным pom.xml(см. выше), JAR-файл будет иметь название gs-maven-initial-0.1.0.jar.

с «jar» на «war», то результатом будет WAR-файл в target директории вместо 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(в пределах

Этот блок XML объявляет список зависимостей проекта. В частности, он объявляет единственную зависимость от Joda Time библиотеки. В элементе, зависимость определяется через описание трех вложенных элементов:

По умолчанию, все зависимости определены как зависимости. Т.е. они должны быть доступны во время компиляции(а если вы собираете WAR-файл, то в /WEB-INF/lib каталоге). Кроме того, вы можете добавить элемент, с одним из значений:

  • provided — зависимости, которые требуются для компиляции кода проекта, но которые будут доступны во время выполнения кода контейнером(например, Java Servlet API)
  • test — зависимости, которые используются для компиляции и запуска тестов, но не требуемые для сборки или выполнения кода проекта

Сейчас, если вы выполните mvn compile или mvn package , Maven должен будет разрешить Joda Time зависимость из Maven Central репозитория и успешно собрать проект.

Здесь полная версия pom.xml :

Поздравляем! Вы создали простой, но эффективный файл сборки Maven для сборки Java проектов.

Читать еще:  Не сохранил изменения в excel как восстановить
Ссылка на основную публикацию
Adblock
detector