建立 Skinny WAR 包

在 EAR 中可包含多個 WAR 包,WAR 中有包含着 lib 目錄,因爲存放其依賴的第三方 JAR 包。若是多個 WAR 包,WAR 包與 EJB-JAR 包的依賴之間存在這重疊,便會形成浪費。若是應用較大,依賴較多,那還會形成比較嚴重的磁盤資源的浪費和部署時的不便。maven

解決這個問題的一個方法就是在打 WAR 包的時候不建立 lib 目錄,而經過修改 manifest.mf 文件的 Class-Path 部分,讓其依賴 EAR 包 lib 目錄下的第三方 JAR 包。經過配置 Maven WAR Plugin,就可實現這個目的。具體配置以下:spa

<!-- lang: xml -->
<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>${version.war.plugin}</version>
    <configuration>    
        <packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
            </manifest>
        </archive>
    </configuration>
</plugin>

其中 <archive> 的配置實際上是經過 Maven Archiver,這是一個被不少 Maven 插件使用的通用項目。更多配置請參見 Maven Archiver 的文檔。插件

相關文章
相關標籤/搜索