какой командой можно узнать версию maven установленную на пк

Apache Maven — основы

После публикации топика о Maven в комментариях возникли вопросы о том, как начать с ним работать, с чего начать, как составлять файлы pom.xml, откуда брать плагины и т.п. Данный топик будет своего рода getting started или f.a.q.

Терминология

Как в любой системе, в Maven, есть свой набор терминов и понятий.

Вся структура проекта описывается в файле pom.xml (POM – Project Object Model), который должен находиться в корневой папке проекта. Ключевым понятием Maven является артефакт — это, по сути, любая библиотека, хранящаяся в репозитории. Это может быть какая-то зависимость или плагин.

Зависимости — это те библиотеки, которые непосредственно используются в вашем проекте для компиляции кода или его тестирования.

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

В самом начале работы с Maven, пользователь непременно столкнется с таким понятием как архетип. Архетип — это некая стандартная компоновка файлов и каталогов в проектах различного рода (веб, swing-проекты и прочие). Другими словами, Maven знает, как обычно строятся проекты и в соответствии с архетипом создает структуру каталогов.

Как правило, название артефакта состоит из названия группы, собственного названия и версии. К примеру Spring будет иметь вот такое название в среде Maven: org.springframework.spring:2.5.5. Последний домен означает всегда artifactId, все, что перед ним – groupId – хорошо это запомните!

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

Установка Maven

Последнюю версию всегда можно скачать на странице загрузки на официальном сайте. Просто распаковываем архив в любую директорию. Далее необходимо создать переменную в Path, в которой необходимо указать путь к Maven. Заходим в Win + Pause – Дополнительно – Переменные среды – в верхнем окошке нажимаем Создать, вводим имя M2_HOME и значение допустим “C:\apache-maven-2.2.1”. Далее там же создаем еще одну переменную M2 со значением %M2_HOME%\bin. Так же убеждаемся, что есть переменная JAVA_HOME с путем к JDK. Ее значение должно быть примерно таким «c:\Program Files\Java\jdk1.6.0_10\». И наконец в том же окошке создаем/модифицируем переменную Path, в нее необходимо просто написать %M2%, чтобы наша папочка с исполняемым файлом Maven была видна из командной строки. Теперь необходимо проверить работоспособность нашей установки. Для этого заходим в командную строку и вводим команду

Должна появиться информация о версиях Maven, jre и операционной системе, что-то вроде:

Maven создаст вам локальный репозиторий в вашей личной папке, например в каталоге C:\Documents and Settings\username\.m2\repository

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

Создание приложения из архетипа

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

Итак, допустим нас интересует веб-приложение – находим подходящий архетип, называется он maven-archetype-webapp. В командной строке, в необходимом каталоге выполняем команду Maven:

Теперь мы можем лицезреть довольно наглядную структуру каталогов с говорящими названиями java – здесь будут ваши классы, webapp – здесь размещаются странички веб-приложения, resources – различного рода ресурсы в classpath (файлы конфигурации, например), test – юнит-тесты, соответственно и т.п.

Сборка проекта

Здесь все просто – выполняем команду

в корневом каталоге приложения, там, где находится файл pom.xml. Первая команда скомпилирует ваш проект и поместит его в папку target, а вторая еще и положит его к вам в локальный репозиторий.

Есть полезная функция, наподобие конвеера, то есть можно написать

и Maven сначала очистит папку target проекта, потом соберет его и положит в репозиторий.

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

Зависимости и репозитории

Как правило, большинство популярных библиотек находятся в центральном репозитории, поэтому их можно прописывать сразу в раздел dependencies вашего pom-файла. Например чтобы подключить Spring Framework необходимо определить следующую зависимость:

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

Специфические вещи обычно не находятся в центральном репозитории и тогда вам придется указать репозиторий производителя вручную. Для примера добавим зависимость JSF-фреймворка ajax-компонентов JBoss RichFaces.

С зависимостями все просто:

А вот репозиторий JBoss теперь необходимо прописать ручками либо в файле settings.xml, который лежит в корне вашего локального репозитория, либо в самом файле pom.xml, в зависимости от того, нужен ли данный репозиторий во всех проектах, либо в каком-то одном конкретном, соответственно:

Как правило на сайтах крупных проектов пишут всю информацию, необходимую для встраивания их библиотеки в проект на основе Maven, но бывают случаи, когда артефакт приходится искать очень и очень долго. Здесь нам очень сильно может помочь MVNrepository.com — он вам всегда подскажет где может находиться искомая библиотечка. Но если уж и там не нашлось, то из собственного опыта могу посоветовать гуглить « pom.xml». Бывает так, что проекты уже давно закрыты и в репозитории не положены потому что разработчики уже не заботятся об их распространении. Тогда остается один единственный способ – добавить файл в репозиторий вручную командой:

Последний параметр чаще всего имеет значение jar.

Плагины

Так как плагины являются такими же артефактами, как и зависимости, то они описываются практически так же. Вместо раздела dependencies – plugins, dependency – plugin, repositories – pluginRepositories, repository – pluginRepository.

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

Посмотрим как настроить плагин для создания проекта для Eclipse с использованием WTP ver. 2.0. В раздел plugins нашего pom.xml прописываем следующий плагин:

Теперь идем опять таки в командную строку и выполняем команду

Ждем пока Maven найдет все библиотеки в репозитории или скачает их и вуаля – теперь наш Maven-проект можно открыть как проект eclipse. При этом библиотеки никуда не копируются как при классическом подходе, а остаются в репозитории и Eclipse делает на них ссылку через свои переменные.

Единого списка всех плагинов естественно не существует, на официальном сайте только есть поддерживаемые плагины непосредственно разработчиками Maven. Однако хотелось бы отметить, что названия плагинов довольно прямолинейны и сделав поиск по ключевым словам «maven tomcat plugin» вы скорее всего обнаружите первой ссылкой плагин для деплоймента проекта в Tomcat.

Собственный репозиторий

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

Однако нельзя оставить без внимания и достойных конкурентов в лице Artifactory и Archiva.

Источник

Живой сайт об актуальных проектах

User Tools

Site Tools

Sidebar

какой командой можно узнать версию maven установленную на пк. Смотреть фото какой командой можно узнать версию maven установленную на пк. Смотреть картинку какой командой можно узнать версию maven установленную на пк. Картинка про какой командой можно узнать версию maven установленную на пк. Фото какой командой можно узнать версию maven установленную на пк

Table of Contents

Maven FAQ

Основные ссылки по Maven:

Что такое сборка проекта, автоматизация сборки?

Что такое Maven? Как он работает?

Если собирать большие проекты с командной строки, то команда для сборки будет очень длинной, поэтому её иногда записывают в bat/sh скрипт. Но такие скрипты зависят от платформы. Для того чтобы избавиться от этой зависимости и упростить написание скрипта, используют инструменты для сборки проекта.

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

Какие преимущества Maven?

Основные преимущества Maven:

Какие недостатки Maven?

Какими аспектами управляет Maven?

Вот основные аспекты, которыми позволяет управлять Maven:

Как узнать, какую версию Maven вы используете?

Версию можно узнать с помощью следующей команды:

Для чего был создан Maven?

Основной целью Maven является предоставление разработчику:

Структура и содержание проекта Maven указывается в специальном xml-файле, который назывется Project Object Model (POM), который является базовым модулем всей системы.

Какая структура каталогов в Maven?

src/main/javaApplication/Library sourcesисходный код приложения или библиотеки
src/main/resourcesApplication/Library resourcesресурсы приложения или библиотеки
src/main/filtersResource filter filesфайлы с параметрами фильтрации ресурсов
src/main/webappWeb application sourcesисходный код веб-приложения
src/test/javaTest sourcesисходный код тестов (юнит-тестов)
src/test/resourcesTest resourcesресурсы юнит тестов
src/test/filtersTest resource filter filesфайлы с параметрами фильтрации ресурсов для тестов
src/itIntegration Tests (primarily for plugins)интеграционные тесты (в основном для плагинов)
src/assemblyAssembly descriptorsдескрипторы сборки
src/siteSiteвебсайт приложения (документация)
LICENSE.txtProject’s licenseлицензионное соглашение проекта
NOTICE.txtNotices and attributions required by libraries that the project depends onзамечания и необходимые атрибуты библиотек, от зависит проект
README.txtProject’s readmeкраткое описание проекта

Где хранятся файлы классов при компиляции проекта Maven?

Что такое pom.xml?

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

содержит ссылку на схему XML, которая облегчает редактирование и проверку pom.xml :

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

Какую информацию содержит pom.xml?

Среди информации которую содержит pom.xml, мы можем выделить следующие блоки:

Что такое супер POM?

Какие элементы необходимы для минимального POM?

Что такое зависимости в Maven?

Что такое артефакт в Maven?

Что такое плагин в Maven?

Что такое задача в Maven?

Что такое архетип в Maven?

Что такое репозитарий в Maven?

Какие типы репозитария существуют в Maven?

В Maven существуют три типа репозитариев:

Какая команда устанавливает JAR-файл в локальное хранилище (репозитарий)?

Какой порядок поиска зависимостей Maven?

Когда мы выполняем собрку проекта в Maven, автоматически начинается поиск необходимых зависимостей в следующем порядке:

Какие два файла настройки есть в Maven, как они называются и где расположены?

Что такое жизненный цикл сборки в Maven?

Назовите основные фазы жизненного цикла сборки Maven?

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

В Maven есть следующие три стандартных жизненных цикла:

Что делает команда mvn site?

создает веб-сайт проекта.

Что делает команда mvn clean?

эта команда очищает целевую директорию от созданных в процессе сборки файлов.

Из каких фаз состоит жизненный цикл сборки Clean?

Жизненный цикл сборки Clean состоит из следующих этапов:

Из каких фаз состоит жизненный цикл сборки Default (Build)?

Здесь также необходимо уточнить два момента:

Из каких фаз состоит жизненный цикл сборки Site?

Жизненный цикл сборки Site состоит из следующих этапов:

Что сделает команда «mvn clean dependency:copy-dependencies package»?

Порядок выполнения зависит от порядка вызова целей и фаз. Рассмотрим данную команду:

Аргументы clean и package являются фазами сборки, в то время как “ dependency:copy-dependencies ” является задачей.

Что такое профиль сборки (Build Profile)?

Используя профиль сборки Maven, мы можем настраивать сборку для различных окружений, таких как Development или Production.

Профили настраиваются в файле pom.xml с помощью элементов activeProfiles / profiles и запускаются различными методами.

Какие типы профилей сборки (Build Profiles) вы знаете?

В Maven существует три основных типа профилей сборки :

Как вы можете активировать профили сборки?

Профиль сборки Maven может быть активирован различными способами:

Для чего используются Maven плагины?

Maven плагины используются для:

Какие типы плагинов существуют в Maven?

В Maven существует два типа плагинов:

Когда Maven использует внешние зависимости?

Если необходимые файлы не найдены ни в центральном, ни на удалённом репозитарии, тогда для решения этой проблемы используются внешние зависимости.

Что нужно определить для внешней зависимости?

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

Какая команда создает новый проект на основе архетипа?

Переходим в нужную нам директорию и выполняем в терминале следющую команду:

Что такое SNAPSHOT в Maven?

В чем разница между snapshot и версией?

В случае со snapshot, Maven автоматически будет подтягивать крайний snapshot ( data-service:1.0-SNAPSHOT ) каждый раз, когда будет выполнятся сборка проекта.

Что такое транзитивная зависимость в Maven?

Как Maven определяет, какую версию зависимостей использовать, когда встречается множественный вариант выбора?

Что такое область видимости зависимостей (dependency scope)? Назовите значения dependency scope.

Существуют следующие области видимости зависимостей :

Какой минимальный набор информации нужен для составления ссылки зависимостей в разделе dependencyManagement?

Как сослаться на свойство(property) определенное в файле pom.xml?

Для чего нужен элемент в POM файле?

Элемент содержит информацию, необходимую для выполнения плагина.

Каким образом можно исключить зависимость в Maven?

Что является полным именем артефакта?

Если вы не определяете никакой информации, откуда ваш POM унаследует её?

Все POM-ы наследуются от родителя, несмотря на то, определен ли он явно или нет. Это базовый POM известный как “супер POM”, он содержит значения, которые наследуются по умолчанию.

При сборке проекта Maven постоянно проверяет наличие обновлений в интернете. Можете ли вы собрать проект без интернета?

Да, можете, если в вашем локальном репозитарии есть все необходимые для сборки артефакты.

Если при сборке проекта в тестах произошла ошибка, как собрать проект без запуска тестов?

Как запустить только один тест?

Источник

Как получить версию проекта Maven в командной строке bash

Предыдущее Я выпустил вопрос о о том, как изменить проект Maven vesion из командной строки, что приведет меня к новой проблеме.

Раньше мне удалось получить номер версии, поскольку версия была сохранена как свойство, которое было легко grep и проанализировать из командной строки (bash). Теперь, когда элемент pom.xml используется для этого, он больше не уникален, так как все зависимости и, возможно, некоторые другие тоже используют это. Я думаю, что нет способа получить текущий номер версии с помощью bash script без внешних инструментов для синтаксического анализа xml или некоторой команды sed с поддержкой контекста.

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

Решение

Спасибо за помощь. Я должен был cd в каталог вручную, но это можно сделать легко. В моем bash script у меня есть

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

И я использую это, просто позвонив

Надеюсь, это поможет кому-то.

Плагин поддержки Maven как-то уже предлагает что-то для этого:

Решение Tom с плагином Exec Maven намного лучше, но все же сложнее, чем нужно. Для меня это так просто, как:

Я провел некоторые исследования и обнаружил следующее:

Maven обвиняют в том, что он не может быть легко интегрирован в сценарии работы системы, поскольку он не следует некоторым рекомендациям относительно инструментов CLI. (ссылка: https://youtu.be/1ILEw6Qca3U?t=372)

Карл Хайнц Марбез (https://github.com/khmarbaise) исправил это, добавив необязательный параметр, который позволяет вызывать его следующим образом:

Самый верный ответ – довольно мусор, на мой взгляд, вы должны использовать кучу grep, чтобы взломать вывод консоли maven. Почему бы не использовать правильный инструмент для работы? Использование синтаксиса xpath – лучший способ получить номер версии, поскольку это предназначенный метод доступа к структуре данных XML. Выражение, приведенное ниже, пересекает pom, используя “локальное имя” элементов, другими словами, игнорируя объявления пространств имен, которые могут быть или не быть в xml.

Это позволит избежать необходимости отключать записи журнала на выходе:

Пока у вас есть python 2.5 или выше, это должно работать. Если у вас более низкая версия, установите python-lxml и измените импорт на lxml.etree. Этот метод является быстрым и не требует загрузки каких-либо дополнительных плагинов. Он также работает с malformed файлами pom.xml, которые не проверяются с помощью xmllint, как те, которые мне нужны для синтаксического анализа. Протестировано на Mac и Linux.

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

Это самое чистое решение, которое я нашел:

Если вы не хотите писать версию во временный файл, есть еще одно решение (без grep/sed), которое хорошо работает для меня. ( EDIT: см. rjrjr answer для гораздо более простого решения без каких-либо временных сбоев файлов)

Только для записи можно настроить ведение журнала Maven Simple SLF4J непосредственно в командной строке для вывода только того, что нам нужно, настроив:

ИЗМЕНИТЬ

Я вынул вывод в файл и пропустил его через свой первый фильтр непосредственно из BASH, он отлично работает. так что опять же, не зная, что происходит на земле Дженкинса.

Чтобы получить 100% в Jenkins, я добавил следующий фильтр sed ; здесь мой последний

ИЗМЕНИТЬ

Простое решение maven

И для бонусных очков проанализированная часть версии

Например, чтобы напечатать версию вашего проекта Maven на терминал, запустите:

который дает результат, похожий на maven-help-plugin :

Однако вы также можете указать произвольный формат вывода (чтобы версия могла быть выбрана из журнала сервером CI, например TeamCity):

Чтобы сохранить вывод в файл (чтобы сервер CI, такой как Jenkins, мог использовать его):

Результирующий файл version.properties будет выглядеть следующим образом:

Помимо всего вышесказанного, Release Candidate также позволяет устанавливать версию вашего проекта ( что вы, вероятно, сделаете на своем сервере CI) на основе версии API, определенной в вашем POM.

Если вы хотите увидеть пример кандидата-кандидата, который используется как часть жизненного цикла Maven, посмотрите на pom.xml моего другого проекта с открытым исходным кодом – Build Monitor для Jenkins.

Удобное для понимания решение “все-в-одном”, которое выводит версию проекта maven и подавляет посторонние выходы сообщений [INFO] и Download :

То же самое, но разделить на две строки:

Итак, используя project.version в простой bash script:

Другие решения на этой странице, похоже, не сочетали в себе все трюки.

Должна быть проще, поскольку эта ошибка исправлена ​​в maven-help-plugin 3.0.0: MPH-99 Evaluate не имеет выхода в тихом режиме.

Я нашел правильный баланс для меня. После mvn package плагин target/maven-archiver/pom.properties создает target/maven-archiver/pom.properties с таким содержимым

и я использую Bash только для его выполнения

Конечно, запуск этого файла вовсе не безопасен, но его можно легко преобразовать в сценарий perl или bash для чтения и установки переменной окружения из этого файла.

Это работало для меня в автономном режиме и не зависело от mvn:

Плагин Exec работает без какого-либо анализа вывода, поскольку вывод можно перенаправить в файл и вставить обратно в среду задания через плагин EnvInject:

какой командой можно узнать версию maven установленную на пк. Смотреть фото какой командой можно узнать версию maven установленную на пк. Смотреть картинку какой командой можно узнать версию maven установленную на пк. Картинка про какой командой можно узнать версию maven установленную на пк. Фото какой командой можно узнать версию maven установленную на пк

mvn-version – это оболочка zsh script, которая использует xmlstarlet для чтения pom.xml и распечатывает версию проекта (если он существует) или версии родительского проекта (если он существует):

Преимущество заключается в том, что он быстрее, чем запуск mvn :

Разница на моей машине больше двух порядков.

Существует также один вариант без необходимости Maven:

Мне нужно именно это требование во время моей работы в Travis, но с несколькими значениями.
Я начинаю с этого решения, но при многократном вызове это происходит очень медленно (мне нужно 5 выражений).

Будет производить это:

теперь вы можете просто получить файл

Это, безусловно, самое простое решение для Bash Cut и Paste:

Я использую однострочную оболочку в моей оболочке Unix…

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

это редактирование сверху

Я проверил это на cmdline работает хорошо

это еще одна версия того же. У меня есть необходимость получить номер версии в Jenkins CI в k8s без установленного mvn, так что это очень полезно

Это то, что я использовал для получения номера версии, подумал, что было бы лучше сделать maven для этого

Нижняя колонка Maven довольно стандартная:

Итак, вы можете использовать следующий код:

Источник

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

Авторизуйтесь

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

какой командой можно узнать версию maven установленную на пк. Смотреть фото какой командой можно узнать версию maven установленную на пк. Смотреть картинку какой командой можно узнать версию maven установленную на пк. Картинка про какой командой можно узнать версию maven установленную на пк. Фото какой командой можно узнать версию maven установленную на пк

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

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

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

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

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

27–28 ноября, Москва, Беcплатно

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *