Настроить порядок сборки для мультипроекта в Maven
У меня есть несколько проектов в maven:
paren-project
-> plugin-project
-> testbed-project
Проект plugin
генерирует JAR, который вручную копируется в конкретный подкаталог testbed
(используя любой встроенный script как groovy или ant). Важный момент: я не хочу, чтобы JAR плагина находился в пути к классу testbed.
Но я не могу найти решение для принудительного создания проекта плагина перед проектом тестового стенда. Если я устанавливаю проект плагина как зависимость проекта testbed, он добавляется в путь к классам.
Любое решение, или мне нужно переключиться на систему сборки, например ivy или ant?
Ответы
Ответ 1
Как упоминается в http://maven.apache.org/guides/mini/guide-multiple-modules.html
Сортировка реактора
Because modules within a multi-module build can depend on each other,
it is important that The reactor sorts all the projects in a way that
guarantees any project is built before it is required.
The following relationships are honoured when sorting projects:
- зависимость проекта от другого модуля в сборке
- объявление плагина, где плагин - это еще один модуль в сборке
- зависимость плагина от другого модуля в сборке
- объявление расширения сборки на другом модуле в сборке
- порядок, объявленный в элементе modules (если не применяется другое правило)
Обратите внимание, что используются только "экземплярированные" ссылки - dependencyManagement и элементы управления плагином не будут приводить к изменению порядка сортировки реактора
Надеюсь, это поможет вам в достижении ваших требований.
Привет,
Charlee Ch.
Ответ 2
Maven - это универсальная система. Не нужно переключаться.
Вы можете добавить зависимость следующим образом:
<dependency>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<optional>true</optional>
</dependency>
Таким образом, зависимость не будет включена в путь к классам.
Подробнее о Необязательная зависимость