Язык программирования Java

Содержание

Слайд 2

Что такое maven? "Maven is a project development management and comprehension

Что такое maven?

"Maven is a project development management and comprehension tool"

с сайта maven.apache.org
Apache Maven – это средство для управления и сборки проектов. Он позволяет разработчикам управлять жизненным циклом проекта. Благодаря этому, команда может автоматизировать процессы, связанные со сборкой, тестирование, упаковкой проекта и т.д.
В случае, когда над проектом работает несколько команд разработчиков, Maven позволяет работать в соответствии с определенными стандартами создаёт базовую структуру проекта.
Maven обеспечивает поведение проекта по умолчанию Разработчики несут ответственность только за соответственное размещение файлов.
Логика работы Maven основана на репозиториях. Репозиторий - это хранилище библиотек и плагинов, которые автоматически скачиваются при упоминании в файле описания сборки.
Слайд 3

Что важно для нас ? Независимость от платформы и IDE. Всё

Что важно для нас ?

Независимость от платформы и IDE. Всё абсолютно

идентично, как на Windows, так и на Linux/UNIX, MacOS и т.д. Мавен проект легко подхватывается в любой IDE, будь то IntelliJ IDEA, Eclipse или NetBeans. Всё предельно просто и из командной строки или из самой среды IDE.
Популярность. В настоящее время Maven используется повсеместно для ведения новых проектов в любой компании, и множество старых проектов также переводятся на него. Опыт с Maven будет полезен вам, если будете работать в области Java.
Глобальные репозитории библиотек. Репозиторий содержащие все известные популярные Java-библиотеки, и множество малоизвестных. Возможность добавлять свои библиотеки и инструментарий в глобальные репозитории. Мавен сохраняет подключенные версии библиотек в локальном репозитории, позволяя работать с ними в условиях отсутствия связи с Интернет.
Plug-in архитектура, дающая огромную гибкость и расширяемость под свои нужды. Множество уже готовых плагинов (существуют обширные репозитории Мавен-плагинов), простота в разработке и добавлении новых.
Единый унифицированный цикл жизни любого проекта, от малых алгоритмических задач, разрабатываемых одним человеком, до огромных Enterprise приложений, в разработке и сопровождении которых заняты сотни и тысячи людей.
Слайд 4

Начало работы с Maven В самом начале работы с Maven, пользователь

Начало работы с Maven

В самом начале работы с Maven, пользователь непременно

столкнется с таким понятием как архетип. Архетип — это некая стандартная компоновка файлов и каталогов в проектах различного рода (веб, swing-проекты и прочие). Другими словами, Maven знает, как обычно строятся проекты и в соответствии с архетипом создает структуру каталогов.
Maven уже предоставляет нам наиболее популярные архетипы для приложений, но вы можете легко создать свой.
Допустим нас интересует веб-приложение – находим подходящий архетип, называется он maven-archetype-webapp. Выбереем нужный архетип.
После этого мы имеем наглядную структуру каталогов с говорящими названиями
java – здесь будут ваши классы,
webapp – здесь размещаются странички веб-приложения,
resources – различного рода ресурсы в classpath (файлы конфигурации, например),
target - cкомпилированный байт-код
test – юнит-тесты, соответственно и т.п.
Слайд 5

Слайд 6

Начало работы с Maven Структура и сожержание проекта Maven указывается в

Начало работы с Maven

Структура и сожержание проекта Maven указывается в специальном

xml-файле, который назывется Project Object Model (pom.xml), этот файл является базовым модулем всей системы.
Ключевым понятием Maven является артефакт — это, по сути, любая библиотека, хранящаяся в репозитории. Это может быть какая-то зависимость или плагин.
Плагины это настройки для управления жизненным циклом проекта и его зависимостями.
Мы можем создавать проекты с использованием Maven без понимания того, как работают эти отдельные плагины.
В Maven каждый проект идентифицируется парой groupId artifactId.
Во избежание конфликта имён,
groupId - наименование организации или подразделения и обычно действуют такие же правила как и при именовании пакетов в Java - записывают доменное имя организации или сайта проекта.
artifactId - название проекта.
...
...
...
Внутри тэга version, хранится версия проекта. Если состояние кода для проекта не зафиксировано, то в конце к имени версии добавляется "-SNAPSHOT" что обозначает что версия в разработке.
Тег определяет какого типа файл будет создаваться как результат сборки. Возможные варианты pom, jar, war, ear
Слайд 7

Зависимости и репозитории Как правило, большинство популярных библиотек находятся в центральном

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

Как правило, большинство популярных библиотек находятся в центральном репозитории,

поэтому их можно прописывать сразу в раздел dependencies вашего pom-файла. Например чтобы подключить Log4j необходимо определить следующую зависимость:
Так как плагины являются такими же артефактами, как и зависимости, то они описываются практически так же. Вместо раздела dependencies – plugins, dependency – plugin, repositories – pluginRepositories, repository – pluginRepository.



log4j
log4j
1.2.14


Слайд 8

Объектная модель проекта Объектная модель проекта определяет полную конфигурацию для какого-то

Объектная модель проекта

Объектная модель проекта определяет полную конфигурацию для какого-то единственного

проекта.
Конфигурация включает:
название
владельца
зависимости от других проектов
и конфигурацию индивидуальных фаз процесса сборки, реализуемую посредством плагинов.
Например, мы можем указать использование Java version 1.8 для компиляции, или специфицировать, что проект должен быть упакован, даже если несколько юнит-тестов не прошли.
Большие проекты могут разделяться на несколько модулей или подпроектов, каждый со своим POM. Таким образом разрабатывается корневой POM, в котором описаны модули и с помощью которого можно скомпилировать все модули одной командой. Все POM-ы наследуют некий базовый супер-POM по умолчанию. В супер-POM определены source-каталоги и плагины по умолчанию.
Таким образом, структура проекта представляет собой иерархию модулей и подмодулей иногда с достаточной большой глубиной.
Слайд 9

Тэг не обязательный т. к. существуют значения по умолчанию. Этот раздел

Тэг не обязательный т. к. существуют значения по умолчанию.

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



org.apache.maven.plugins
maven-compiler-plugin

1.8
1.8




Также добавляется информация, которая не используется самим мавеном, но нужна для программиста, чтобы понять, о чём этот проект:
название проекта:
some-name
описание проекта
Description of project functionallity
сайт проекта:
http://www.example.com
Слайд 10

Жизненный цикл проекта Жизненным циклом называется вся совокупность операций над проектом

Жизненный цикл проекта

Жизненным циклом называется вся совокупность операций над проектом от

инициализации сборки до развёртывания.
В процессе прохождения жизненного цикла выполняются определённые операции над проектом. Жизненный цикл разделён на фазы.
Каждая фаза подразумевает перевод проекта в новое состояние в результате её прохождения и появление новых артефактов.
При выполнении определенной фазы автоматически последовательно выполняются все предыдущие фазы (те фазы от которых зависит выполняемая), на каждой фазе производится вызов соответствующего плагина.
К каждой фазе может быть привязан ноль или более различных плагинов. По умолчанию, набор фаз с привязанными плагинами стандартен и зависит от типа артефакта проекта.
Слайд 11

Основные Фаза clean – очистка артефактов, созданных в процессе предыдущих сборок.

Основные Фаза

clean – очистка артефактов, созданных в процессе предыдущих сборок.
validate –

проверка проекта на соответствие заданной конфигурации, а также проверка доступности всей необходимой информации.
compile – компиляция исходного кода.
test – тестирование скомпилированного кода с использованием сконфигурированного тестового движка (например, JUnit).
package – упаковка скомпилированного кода в формат поставки, например в JAR.
integration-test – обработка и поставка упакованного пакета в окружение (на систему), обеспечивающее возможность запуска интеграционных тестов
verify – проверка целостности пакета и его соответствия критериям качества
install – инсталляция пакета в локальный репозиторий для его дальнейшего использования в качестве зависимости в других локальных пакетах и проектах
site – генерация site-документации для проекта (опциональная фаза)
deploy – поставка пакета на интеграционное или релизное окружение, включая также его копирование в удалённый репозиторий, где он доступен для других разработчиков и прочих проектов