我正在使用Maven 3來處理(大)項目。該項目使用Scala,Akka和Spray框架定義了一套REST服務。每個服務都被定義爲一個獨立的項目,由於使用了「mvn package」命令而產生了一個WAR。Maven在編譯時如何處理WAR依賴關係?
我必須將這些不同的服務「集合」到一個「系統」中,也就是將這些服務的一個子集用於特定目的的單個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的項目數定義,這是不是最佳的方式...