SlideShare a Scribd company logo
Maven 3:уличная магияАлексей СолнцевJEEConf 2011
Обо мнеJava и Flex aрхитектор в компанииInfopulse Ukraine
Certified Scrum Practitioner
Координатор перевода книг "Scrum and XP from the Trenches“ и“Kanban and Scrum – making the most of both”
Agile тренер в XP InjectionМой опыт работы с MavenЗавершился перевод проекта с Ant  на MavenПереход на Maven 3Автоматизация приёмочного, интеграционного и нагрузочного тестированияМоё знакомство с Maven 2
О васКто вообще не знает что такое Maven?
Кто использует для сборки Ant?
Кто начал мигрировать на Maven?
Кто уже использует Maven в своём проекте?
Кто считает себя экспертом в Maven?
Кто может собрать проект и задеплоить его на сервер одной командой?Maven или Ant?Придумай и сконфигурируйДелай как предлагают
Maven – набор лучших практик
Структура проекта по умолчанию
Куда бы положить исходники?src/   java    testsconfigs<build><sourceDirectory>src/java</sourceDirectory><testSourceDirectory>src/tests</testSourceDirectory><resources>	<resource>		<directory>src/configs</directory> 		</resource></resources></build>
Общая картинаRepositoryDEPLOYGETGETPluginsPOMArtifactBuild lifecycle
Project Object ModelЗависимости проектаИнформация о модуляхПлагины и порядок их выполненияСистема управления версиямиУправление поставкойИнформация про разработчиков, лиценизи, систему отслеживания ошибок
Репозитории90 000 артифактов70 ГБ ВнутреннийВнешниеЛокальный
Nexus как прокси-серверОт создателей Maven и менеджеров центрального репозиторияВозможность загрузки 3rd-party библиотек при помощи веб-интерфейсаПоддержка LDAPПланировщик задачРасширенный поиск по библиотекам и именам классов
Maven 3 : уличная магия
Конфигурация и использованиеУвеличьте максимальный объём используемой памятиПо возможности используйте Linux-серверПод Windows используйте специальную конфигурациюОбязательно чистите snapshot-версииА потом не забывайте очистить корзину используя schedulerДелайте дефрагментацию дискаbin\jsw\conf\wrapper.confconf\examples\jetty-faster-windows.xml
Состояние диска (2 месяца работы)
Работа с артефактамиРазные типы: jar, war, zip, swfОдин модуль –артефактодного типаКоординаты артефакта<dependency><groupId>com.app</groupId>   <artifactId>myapp</artifactId>   <version>1.2.1</version>   <classifier>linux</classifier></dependency>Любая библиотекаРезультат сборки  Артефакт
Жизненный цикл сборкиvalidate, initialize
generate-sources, process-sources
generate-resources, process-resources
compile, process-classes
generate-test-sources, process-test-sources
generate-test-resources, process-test-resources
test-compile, process-test-classes
test
prepare-package, package
pre-integration-test, integration-test, post-integration-test
verify, install, deployПлагины,фазы и целиmvn installmvn resources:resources \compiler:compile \resources:testResources \compiler:testCompile \surefire:test \    jar:jar \install:install
Default goal<project><build>    <defaultGoal>install</defaultGoal></build></project>Возможно прописать только один goal или phase
maven-enforcer-pluginПроверка определённой версииОС,Java и MavenПроверка наличия или отсутствия определённых файловВозможно запрета использования определённых версий библиотекВозможно написания своих правил и выполнения скриптов
maven-ant-pluginОчень простоОчень полезно
...<dependencies>    <dependency>        <groupId>ant-contrib</groupId>        <artifactId>ant-contrib</artifactId>    </dependency>    <dependency>        <groupId>xdoclet</groupId>        <artifactId>xdoclet-hibernate-module</artifactId>    </dependency></dependencies>    <executions>      <execution>        <configuration>        <tasks>          <taskdef name="ejbdoclet" classname="xdoclet.modules.ejb.EjbDocletTask" classpathref="maven.compile.classpath" />          <taskdef resource="net/sf/antcontrib/antcontrib.properties”/>          <ejbdocletdestDir="${basedir}/src/generated" ejbspec="2.0” force="false"    verbose="false”/>        </tasks>...Проблема в Maven2 – невозможно перегрузить зависимости для плагина. Решена в Maven3.
<id>populate</id><phase>process-resources</phase><configuration>	<tasks>		<property file=“developer.properties" />		<ant dir="${basedir}" antfile="init.xml" 		target="${init}"inheritAll="true" inheritRefs="true"><propertyset>				<propertyref prefix="database." />			</propertyset>			<property name="dataBase" value="${dataBase}” />		</ant>	</tasks></configuration>
      <plugin>        <artifactId>maven-ant-plugin</artifactId>        <executions>          <execution>            <id>execution1</id>           ...      <goals><goal>run</goal></goals>          </execution>          <execution>            <id>execution2</id>            ...				<goals><goal>run</goal></goals>          </execution>        </executions>      </plugin>Порядок выполнения зависит от порядка появления в POM-е, при условии что прописаны id
maven-dependency-pluginСкачать все зависимостиmvn dependency:go-offlineДревовидная структура списка зависимостейmvn dependency:treeОпределение неиспользуемых зависимостейmvn dependency:analyzeИсключение транзитных зависимостей будет исправлено в Maven 3.1 [MNG-2315]Анализируйте и исключайте ненужные зависимости
Пример анализа неиспользуемых зависимостей
<*Management> враг “копипаста”<dependencyManagement>Наследование версий зависимостей<pluginManagement>Наследование версий зависимостейи их конфигураций
In the basepom.xml … <pluginManagement>	<plugins>		<plugin>            <groupId>org.apache.maven.plugins</groupId>			<artifactId>maven-antrun-plugin</artifactId>			<version>1.1</version>			<executions>				<execution>					<id>echodir</id>					<goals>						<goal>run</goal>					</goals>					<phase>install</phase>					<configuration>						<tasks><echo>Build Dir: ${project.build.directory}</echo>						</tasks>					</configuration>				</execution>			</executions>		</plugin>	</plugins></pluginManagement>

More Related Content

PDF
Введение в maven
PPT
Maven как средство сборки проекта
PDF
Иван Крутов - Автоматизация сборки Java-проекта
PPTX
Cистемы автоматической сборки проектов (Полина Фоминых)
PPTX
Мастер класс- Maven + Jenkins
PPTX
системы сборок проектов
PPTX
Основы и нюансы параллельного тестрования
PPTX
Автоматизация тестирования многопоточности
Введение в maven
Maven как средство сборки проекта
Иван Крутов - Автоматизация сборки Java-проекта
Cистемы автоматической сборки проектов (Полина Фоминых)
Мастер класс- Maven + Jenkins
системы сборок проектов
Основы и нюансы параллельного тестрования
Автоматизация тестирования многопоточности

What's hot (20)

PPTX
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
PDF
Артём Ерошенко «Рецепт приготовления облачных тестингов»
PPTX
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
PPT
Инструментация среды исполнения в арсенале тестировщика
PDF
Конструктор / Денис Паясь (Яндекс)
ODP
Обзор Continuous integration инструментов
PDF
Тестирование осень 2013 лекция 5
PDF
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
PPTX
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
PPTX
Gradle. Новый уровень автоматизации для Android
PDF
BDD girls Battle: Cucumber VS. JBehave
PDF
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
PDF
Application deployment & configuration management
PDF
Selenium grid on-demand
PDF
Python Development process in Yandex
PDF
Системы автоматизированной сборки (Lecture 05 – gradle)
PDF
IT-инфраструктура. FAQ для разработчика
PPTX
Полный цикл разработки на Python + Django
PDF
Highload 2014. PostgreSQL: ups, DevOps.
PDF
Как Cluster Membership Software может помочь QA
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Инструментация среды исполнения в арсенале тестировщика
Конструктор / Денис Паясь (Яндекс)
Обзор Continuous integration инструментов
Тестирование осень 2013 лекция 5
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Gradle. Новый уровень автоматизации для Android
BDD girls Battle: Cucumber VS. JBehave
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
Application deployment & configuration management
Selenium grid on-demand
Python Development process in Yandex
Системы автоматизированной сборки (Lecture 05 – gradle)
IT-инфраструктура. FAQ для разработчика
Полный цикл разработки на Python + Django
Highload 2014. PostgreSQL: ups, DevOps.
Как Cluster Membership Software может помочь QA
Ad

Viewers also liked (20)

PDF
Очень вкусный фрукт Guava
PDF
Spring the Ripper by Evgeny Borisov
PPTX
Konstantin slisenko - Spring Framework
PPT
Spring in java
PPTX
inside dvm internals
KEY
Google Guava
PPTX
Управление проектом в условии неопределённости
PDF
141 - Spring. Добавление контроллеров Spring MVC
PDF
backbase-cxp-datasheet
PDF
66 - Spring. Spring и JSF
PDF
Maven lifecycle
PDF
Phoenix for Rubyists
PDF
Async Gateway или Разработка системы распределенных вычислений с нуля
PPTX
Hazelcast and MongoDB at Cloud CMS
PPT
HighLoad++ 2009 In-Memory Data Grids
PDF
50 nouvelles choses que l'on peut faire en Java 8
PDF
Алексей Николаенков, Devexperts
PDF
Hazelcast for Terracotta Users
PPTX
Code review at large scale
PDF
Amazon cloud – готовим вместе
Очень вкусный фрукт Guava
Spring the Ripper by Evgeny Borisov
Konstantin slisenko - Spring Framework
Spring in java
inside dvm internals
Google Guava
Управление проектом в условии неопределённости
141 - Spring. Добавление контроллеров Spring MVC
backbase-cxp-datasheet
66 - Spring. Spring и JSF
Maven lifecycle
Phoenix for Rubyists
Async Gateway или Разработка системы распределенных вычислений с нуля
Hazelcast and MongoDB at Cloud CMS
HighLoad++ 2009 In-Memory Data Grids
50 nouvelles choses que l'on peut faire en Java 8
Алексей Николаенков, Devexperts
Hazelcast for Terracotta Users
Code review at large scale
Amazon cloud – готовим вместе
Ad

Similar to Maven 3 : уличная магия (20)

PPT
Практика
PDF
Тестируй это / Виктор Русакович (GP Solutions)
PPT
Client Side Autotesting Flash
PDF
Building deployment pipeline - DevOps way
PPTX
Silverlight 4, есть ли жизнь на десктопе?
PPT
Apache maven in java projects
PPTX
Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...
PPTX
Dev & test на windows azure
PPTX
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
PDF
Vladimir Trandafilov - When you need your system of cross browser testing
PPT
Vagrant: tool for development and testing
PPTX
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
PPT
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко
PDF
Распределённое нагрузочное тестирование на Java
PPTX
Load testing of web applications
PPTX
Eugene Dmitrichenko - Load testing of web applications
PPTX
Cтандартизация рабочего окружения и автоматизация развертывания рабочей среды
PPT
Monitoring and Load testing
PPT
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
ODP
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
Практика
Тестируй это / Виктор Русакович (GP Solutions)
Client Side Autotesting Flash
Building deployment pipeline - DevOps way
Silverlight 4, есть ли жизнь на десктопе?
Apache maven in java projects
Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...
Dev & test на windows azure
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
Vladimir Trandafilov - When you need your system of cross browser testing
Vagrant: tool for development and testing
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Распределённое нагрузочное тестирование на Java
Load testing of web applications
Eugene Dmitrichenko - Load testing of web applications
Cтандартизация рабочего окружения и автоматизация развертывания рабочей среды
Monitoring and Load testing
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...

More from Aleksey Solntsev (15)

PPTX
Управление сложностью в проектах
PDF
Бути IT-шніком та обирати життя в Україні – це реально
PPTX
Управление ожиданиями заказчика при построении R&D центра в Украине
PPTX
NoSQL - взрыв возможностей
PPTX
NoSQL: what's under the hood?
PPTX
Облачные вычисления
PDF
Ретроспектива: вперёд в прошлое
PPTX
Agile вид из окна тренажёрного зала
PPTX
How to be proud when you are done
PPTX
Code review
PPTX
XP Injection
PPTX
Post Agile
PDF
Первый украинский краудсорсинговый перевод
PPT
Infopulse: How we do Scrum
PPT
Agile Team
Управление сложностью в проектах
Бути IT-шніком та обирати життя в Україні – це реально
Управление ожиданиями заказчика при построении R&D центра в Украине
NoSQL - взрыв возможностей
NoSQL: what's under the hood?
Облачные вычисления
Ретроспектива: вперёд в прошлое
Agile вид из окна тренажёрного зала
How to be proud when you are done
Code review
XP Injection
Post Agile
Первый украинский краудсорсинговый перевод
Infopulse: How we do Scrum
Agile Team

Maven 3 : уличная магия

Editor's Notes

  • #23: http://maven.apache.org/guides/mini/guide-configuring-plugins.html