maven多web合併項目

實際狀況:基於開源做者開源的web項目,擴展開發本身的業務功能,又不想跟原項目混在一塊兒開發,即要實現開源web項目與本身的擴展web項目合併部署且本身的web項目依賴開源的web項目,經網上查詢資料和實際測試以下方案可行。html

開源的web項目pom: <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> 下的<configuration>中添加下面兩行web

<!--注意增長這兩行,在打包時相關的類會被獨立打成jar add by kool.zhao 2016-09-04 -->apache

<attachClasses>true</attachClasses> <classesClassifier>api</classesClassifier>api

本身的web項目pom: 添加依賴:分別依賴開源web項目的war和jar <dependency> <groupId>com.thinkgem.jeesite</groupId> <artifactId>jeesite</artifactId> <version>1.2.7</version> <type>war</type> </dependency>tomcat

<dependency>
	<groupId>com.thinkgem.jeesite</groupId>
	<artifactId>jeesite</artifactId>
	<version>1.2.7</version>
	<type>jar</type>
	<scope>compile</scope>
	<classifier>api</classifier>
</dependency>

<build> <finalName>mysite</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <!-- 測試合併web模塊項目 --> <overlays> <overlay> <groupId>com.thinkgem.jeesite</groupId> <artifactId>jeesite</artifactId> </overlay> </overlays> </configuration> </plugin> </plugins> </build>服務器

參考: http://www.tuicool.com/articles/ArE3iaA http://www.cnblogs.com/silentjesse/p/5071965.htmlapp

maven多web合併項目 多web項目合併,主要是我在網上找到的資料都不是我最終想要的效果,因此這裏就介紹下我最終使用的方案,網上有不少方案都是介紹用caro插件,我到如今也不明白爲何要使用這個插件。 maven的多web模塊maven-war-plugin插件的overlays屬性來處理,最終主web項目pom.xml代碼以下eclipse

<build> <finalName>bpmcenter</finalName> <plugins> <!-- 合併多個war --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <packagingExcludes>WEB-INF/web.xml</packagingExcludes> <overlays> <overlay> <groupId>com.founder.fix.fixflow</groupId> <artifactId>fixflow-webapp-taskcenter</artifactId> </overlay> </overlays> </configuration> </plugin> </plugins> </build> 這裏使用到了maven-war-plugin,用overlay屬性已經足夠將多web合併了,只是用的過程當中須要注意如下幾點: 1. 被合併的子web項目packaging屬性必須是war 2. 被合併的子web項目,必須在主項目中添加依賴關係。 3. 被合併的子web項目中,若是沒有web.xml,則須要在pom.xml中聲明 <build> <finalName>fixflow-webapp-editor</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build>webapp

作完以上幾點,多web項目合併就基本上作完了,運行mvn install就會發現打出的war包中已經存在了其餘子模塊的項目。
   多web項目在eclipse+tomcat環境下部署調試
    在eclipse裏面使用,其實更簡單,只是網上的說法太複雜了而已,對於習慣了tomcat開發的用戶來講。
    對於maven項目,一個環境到另外一個環境應該只有pom.xml文件和src文件夾就夠了,其餘都是用戶根據本身的環境來作的。
  1. 打開eclipse,修改本地maven倉庫地址,導入maven項目,等待構建結束。
  2. 建立server,打開window-prefrences-server-runTime Environment-new ....選擇tomcat路徑,jdk信息,這一步和原來徹底同樣。
  3. 打開server視圖,new server,這裏選中剛纔建立的tomcat,點擊next,這步只須要主web項目添加進來便可。
  4. 雙擊建立的server,選擇將項目發佈到tomcat的webapps目錄下,點擊pushlish,完成。 再去tomcat目錄,發現已經將合併後的web發佈到對應目錄下了。 引用的其餘Java項目已經被打包成jar發佈到lib下了,不過你能夠打個斷點試試,依然能夠調試,修改一段代碼,發現熱部署也是能夠的,這樣就和原來的開發習慣徹底同樣了。 細心的用戶會發現,其實這徹底和咱們原來的構建,部署方式徹底同樣,是的,maven沒有那麼複雜,m2eclipse maven plugin已經幫咱們作好了太多的事情,maven只會讓咱們項目之間的遷移更方便,更簡潔,這也是我喜歡上maven的重要緣由。 我是一個絕對的maven新手,上面的文章用的也只是maven的皮毛而已,maven更多的構建功能還須要深刻去研究,上面文章只是想告訴那些想嘗試maven的新手,其實maven不但對代碼管理帶來了很大的方便,並且徹底能夠不改變咱們原有的開發習慣。因此,盡情的擁抱maven吧!

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應用的其餘資源都不要。 處理思路: 1、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>maven

<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及其餘文件。

2、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要一致。

相關文章
相關標籤/搜索