Справді, за задумом, Мейвен не вирішує транзитивні залежності війни, оголошеної як залежність від проекту. Насправді існує проблема з цим, MNG-1991 , але вона не буде вирішена в Maven 2.x, і я не впевнений, що не знаю, чи дозволяють накладання вирішити цю проблему. Я розумію запропоноване рішення, щоб дублювати залежності, наприклад, у проекті типу pom.
(РЕДАГУВАТИ: Після ще кількох копань, я знайшов щось цікаве в цій темі, яку я цитую нижче:
Протягом останнього місяця я допомагав у розробці проекту AppFuse, де ми активно використовуємо функцію накладання війни у військовому плагіні Maven. Це справді чудова особливість!
Щоб отримати максимальну потужність за допомогою військових накладок, я розробив плагін Warpath, який дозволяє проектам використовувати військові артефакти як повноцінні залежності. Коротко:
1) Вміст каталогу / WEB-INF / classes в артефактах залежності від війни може бути включений до шляху до класу проекту для звичайних завдань компіляції тощо.
2) Транзитивні залежності від артефактів залежності від війни стають доступними для використання іншими плагінами, наприклад, компіляцією та ear - тому більше не потрібно включати всі залежності під час створення худих війн!
Зараз плагін активно використовується в проекті AppFuse протягом останніх кількох місяців, і я відчуваю, що він перебуває на такому етапі, коли він одночасно корисний і стабільний. Чи зацікавлена команда військових плагінів включити функціонал warpath до плагіну війни? Здавалося б, це найприродніше місце для його проведення.
Отже, я не маю досвіду роботи з ним, але плагін maven warpath насправді виглядає приємно і просто і доступний у центральному репо. Щоб використовувати його, включіть у pom.xml
файл наступний елемент конфігурації плагіна :
[...]
<build>
<plugins>
<plugin>
<groupId>org.appfuse</groupId>
<artifactId>maven-warpath-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<extensions>true</extensions>
<executions>
<execution>
<goals>
<goal>add-classes</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
І додайте військові залежності, які ви хочете включити в шлях до класу, як залежності типу warpath :
[...]
<dependencies>
<dependency>
<groupId>org.appfuse</groupId>
<artifactId>appfuse-web</artifactId>
<version>2.0</version>
<type>war</type>
</dependency>
<dependency>
<groupId>org.appfuse</groupId>
<artifactId>appfuse-web</artifactId>
<version>2.0</version>
<type>warpath</type>
</dependency>
</dependencies>
[...]
Потрібні як типи війни, так і тип війни: тип війни використовується плагіном війни Maven для накладання війни, тип війни використовується плагіном Warpath для визначення правильного списку артефактів для включення до шляху шляху проекту.
Я спробую.)