Действительно, по замыслу Maven не разрешает транзитивные зависимости войны, объявленной как зависимость проекта. На самом деле есть проблема с этим, MNG-1991 , но она не будет решена в Maven 2.x, и я не уверен, что не знаю, позволяют ли наложения решить эту проблему. Насколько я понимаю, предлагаемое решение заключается в дублировании зависимостей, например, в проекте типа pom.
(РЕДАКТИРОВАТЬ: немного покопавшись, я нашел кое-что интересное в этой теме, которую цитирую ниже:
В течение последнего месяца я помогал в разработке проекта AppFuse, где мы активно использовали функцию наложения войны в плагине войны Maven. Это действительно отличная функция!
Чтобы получить максимальную мощность с помощью оверлеев войны, я разработал плагин Warpath, который позволяет проектам использовать артефакты войны как полноценные зависимости. Вкратце:
1) Содержимое каталога / WEB-INF / classes в артефактах военных зависимостей может быть включено в путь к классам проекта для обычных задач компиляции и т. Д.
2) Транзитивные зависимости от артефактов зависимости войны становятся доступными для использования другими плагинами, например, компиляцией и Ear - так что больше не нужно включать все зависимости при создании тонких войн!
Плагин сейчас активно используется в проекте AppFuse в течение последних нескольких месяцев, и я чувствую, что сейчас он является одновременно пригодным для использования и стабильным. Заинтересована ли команда плагинов war во включении функциональности warpath в плагин war? Казалось бы, самое естественное место для его размещения.
Итак, у меня нет опыта с этим, но плагин 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>
[...]
Необходимы типы зависимостей как war, так и warpath: тип war используется подключаемым модулем Maven war для наложения war, тип warpath используется подключаемым модулем Warpath для определения правильного списка артефактов для включения в путь к классам проекта.
Я бы попробовал.)