Я использую Maven 3 для обработки (большого) проекта. Этот проект определяет набор сервисов REST, используя Scala, Akka и платформу Spray. Каждый сервис определяется как независимый проект, создающий WAR благодаря команде «mvn package».
Мне нужно «собрать» эти разные сервисы в «систему», то есть подмножество этих сервисов, которые будут развернуты для определенной цели в одной WAR. Оверлей Maven WAR хорошо работает как первое впечатление: просто создайте новый проект и добавьте сервисы, которые будут включены в качестве зависимостей.
<dependencies>
<dependency>
<groupId>net.modelbased.sensapp.service</groupId>
<artifactId>net.modelbased.sensapp.service.metamodel.repository</artifactId>
<version>0.0.1</version>
<type>war</type>
</dependency>
</dependencies>
Хорошо работает, и классы, содержащиеся в независимых сервисах, включены в окончательную WAR.
jar tf target/net.modelbased.sensapp.system.envision-0.0.1-SNAPSHOT.war
[...]
WEB-INF/classes/net/modelbased/sensapp/service/metamodel/repository/ModelLister.class
[...]
Но ... Инфраструктура Spray требует реализации начальной загрузки, то есть класса, который загружает реализованные сервисы. Этот файл должен быть скомпилирован, так как это простой класс scala. Но похоже, что maven не включает зависимости WAR в путь к классам компиляции.
Я видел плагин WARpath (http://static.appfuse.org/maven-warpath-plugin/) ... Но он не выглядит более или менее устаревшим. Есть ли «стандартный» способ сделать то, что я хотел бы сделать (например, включить WAr в компиляцию путь к классу).
Ps. Одним из требований проекта является то, что каждый сервис ДОЛЖЕН быть развернут в качестве независимого артефакта. Решением может быть реализация ядра службы в виде проекта JAR, а также предоставление проекта WAR, который включает ссылку на JAR и связанный файл конфигурации. Но это умножит на 2 количество определенного проекта, что не является оптимальным способом ...