Maven支撐下的War應用依賴另外一個WAR應用的解決方案


最近在做項目中,用Maven管理項目間的依賴關系,遇到一個問題,快折騰死了,不過初步試出來一種解決方案。在此把問題及解決方案描述一下,以資共享。
   問題描述:有兩個項目A和B,Dynamic Web Project。依賴關系是,B-->A,一種方式是利用maven-war-plugin的Overlay機制(例子可參見官網),但這種解決方案默認是將兩個Web應用的資源進行合並,相關的class都會被復制到WEB-INF/classes下面,相關的JSP等資源也合並到一起。我的要求是A的class被獨立打包成一個jar,在發布到應用服務器后存在於B應用的WEB-INF/lib下面,A應用的其他資源都不要。
   處理思路:
   一、A應用的POM處理
    <?xml version="1.0" encoding="UTF-8"?>
<project ......">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxx</groupId>
<version>0.0.1-SNAPSHOT</version>
<name>A-web</name>
<artifactId>A-web</artifactId>
<packaging>war</packaging>

<build>

<plugins>
            
            <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                    <!--注意增加這兩行,在打包時相關的類會被獨立打成jar-->
    <attachClasses>true</attachClasses>
    <classesClassifier>api</classesClassifier>            
            </configuration>
            <version>2.3</version>
            <executions>
            </executions>
            </plugin>
</plugins>
</build>
</project>

   打包完成后,包含A-web.war和a-web-api.jar及其他文件。

二、B應用的POM處理

<?xml version="1.0" encoding="UTF-8"?>
<project ...........>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxx</groupId>
<version>0.0.1-SNAPSHOT</version>
<name>B</name>
<artifactId>B</artifactId>
<packaging>war</packaging>


<dependencies>
<dependency>
<groupId>com.xxx</groupId>
<artifactId>A-web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
<classifier>api</classifier>
</dependency>
</dependencies>

</project>
    注意以上的依賴中的type屬性為jar,而不是默認的war。classifier的值api與A中的classesClassifier的值api要一致。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM