пятница, 31 января 2014 г.

Maven, POM и с чем их едят.

Apache Maven — фреймворк для автоматизации сборки проектов, специфицированных на XML-языке POM (англ. Project Object Model).
Слово maven происходит из языка Идиш и означает примерно «собиратель знания».
Maven, в отличие от другого сборщика проектов Apache Ant, обеспечивает декларативную, а не императивную сборку проекта. То есть, в файлах проекта pom.xml содержится его декларативное описание, а не отдельные команды. Все задачи по обработке файлов Maven выполняет через плагины.


Файл pom.xml: Проект-Объектная Модель

Информация для программного проекта, поддерживаемого Мавеном, содержится в XML-файле с именем pom.xml (от Project Object Model). При исполнении Мавен проверяет прежде всего, содержит ли этот файл все необходимые данные и все ли данные синтаксически правильно записаны.

Пример файла pom.xml:
<project>
  <!-- версия модели для POM-ов Maven 2.x всегда 4.0.0 -->
  <modelVersion>4.0.0</modelVersion>
 
  <!-- координаты проекта, то есть набор значений, который
       позволяет однозначно идентифицировать этот проект -->
 
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0</version>
 
  <!-- зависимости от библиотек -->
 
  <dependencies>
    <dependency>
 
      <!-- координаты необходимой библиотеки -->
 
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
 
      <!-- эта библиотека используется только для запуска и компилирования тестов -->
 
      <scope>test</scope>
 
    </dependency>
  </dependencies>
</project>

Конфигурация включает имя проекта, его собственника и его зависимости от других проектов. Возможно, также, конфигурировать индивидуальные фазы процесса построения проекта (build process), реализованные плагинами. Например, можно конфигурировать плагин компилятора так, что он будет использовать определённую версию Java, или специфицировать упаковку проекта даже в случае негативного результата прохождения некоторых тестов.

Крупные проекты должны быть поделены на несколько модулей, или подпроектов, каждый со своим собственным POM. Можно написать затем корневой POM, через который все модули компилируются единой командой. POM-ы могут наследовать конфигурацию от других POM-ов. Все POM-ы наследуют от Супер POM-а[4] по умолчанию. Супер POM обеспечивает конфигурацию по умолчанию, такую, как структуру каталогов по умолчанию, используемые по умолчанию плагины, и т.п.

Стандартная структура каталогов

Стандартная структура каталогов — одна из реализаций этого принципа. Поскольку проект её придерживается — отпадает необходимость специфицировать пути к файлам, что сильно упрощает pom.xml.
Следующая структура показывает важнейшие каталоги.
Корневой каталог проекта: файл pom.xml и все дальнейшие подкаталоги
src: все исходные файлы
    src/main: исходные файлы собственно для продукта
        src/main/java: Java-исходный текст
        src/main/resources: другие файлы, которые используются при компиляции или исполнении, например Properties-файлы
    src/test: исходные файлы, необходимые для организации автоматического тестирования
        src/test/java: JUnit-тест-задания для автоматического тестирования
target: все создаваемые в процессе работы Мавена файлы
    target/classes: компилированные Java-классы

Тут лежит инстал для maven.
Тут гайд по установке и созданию переменных окружения.

Комментариев нет:

Отправить комментарий