maven合併打包多個war包
在WAR外掛的以往版本中,配置並不總是必須的。如果你覺得使用預設設定能很好滿足要求,那就繼續這麼做。但是如果你需要更多的控制,那麼你就歹好好看看下面的部分了。
<overlay>元素包含有下列子元素:
- id - overlay id。如果你不提供的話,WAR外掛將自動生成一個。
- groupId - 配置你想要覆蓋的groupId。
- artifactId – 配置你想要覆蓋的構件的artifactId。
- type – 配置你想要覆蓋的構件型別。預設值是:war。
- classifier – 如果有多個構件匹配當前的groupId/artifactId,那麼你需要配置構件的classifier以明確覆蓋(classifier:該元素用來幫助定義構建輸出的一些附屬構件)。
- includes - 要包含的檔案。預設情況下,所有檔案都能被包含。
- excludes – 要排除的檔案。預設情況下,在META – INF目錄是被排除在外的。
- targetPath - 在webapp結構的目標相對路徑,當然這隻在覆蓋型別為war時才有效。預設情況下,覆蓋的內容都追加在webapp的根節點下。
- skip – 當設定為true時,跳過本次覆蓋。預設值是:false。
說了這麼多,還是舉例項會比較直觀一點。
比如,我要排除我們的documentedprojectdependency.war下的sampleimage-dependency.jpg來覆蓋目標war檔案:
…
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<overlays>
<overlay>
<groupId>com.example.projects</groupId>
<artifactId>documentedprojectdependency</artifactId>
<excludes>
<exclude>WEB-INF/classes/images/sampleimage-dependency.jpg</exclude>
</excludes>
</overlay>
</overlays>
</configuration>
</plugin>
</plugins>
</build>
…
4、Overlays的打包
Overlays採用第一直達者優先的策略(因此,如果一個檔案被某一個副本覆蓋過,則它不會被另一個副本繼續覆蓋)。
Overlays的應用步驟依照它們在<overlays>配置的順序。如果沒有指定配置,那麼它們的依賴關係將按照POM定義的順序來呼叫(警告:這有很多的不確定性,特別是在您使用傳遞性依賴來覆蓋的時候)。如果當前專案運用了複合覆蓋的情況(即同時包含配置型覆蓋和非配置型覆蓋),非配置型覆蓋應用於配置型覆蓋之後。
預設情況下,該專案源(亦稱當前構建)遵循按pom.xml上下文中依賴的先後順序進行追加(如任何覆蓋元素已被應用之前)。當前構建定義了一個沒有groupId和artifactId的特殊覆蓋方式。如果overlays需要應用第一(直達者優先)原則,那麼就只需簡單地配置當前構建在這些覆蓋之後。
例如,假設groupid為com.example.projects的my-webapp是當前專案的一個依賴,而你需要首先應用它,操作如下:
…
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<overlays>
<overlay>
<groupId>com.example.projects</groupId>
<artifactId>my-webapp</artifactId>
</overlay>
<overlay>
<!– 空 groupId/artifactId代表當前構建 –>
</overlay>
</overlays>
</configuration>
</plugin>
</plugins>
</build>
…
注意:在上述情況下,沒有配置在<overlays>元素的其它WAR依賴都會應用在當前構建之後。
如果你想要執行一項更好更精細的覆蓋策略,overlays能通過不同的includes/exclude元素進行多重打包。例如,我想要在當前專案中使用my-webapp的 index.jsp覆蓋檔案,但是my-webapp的其它檔案還是按照常規方式來控制,鑑於此,我們必須要為 my-webapp定義兩個覆蓋配置:
…
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<overlays>
<overlay>
<id>my-webapp-index.jsp</id>
<groupId>com.example.projects</groupId>
<artifactId>my-webapp</artifactId>
<includes>
<include>index.jsp</include>
</includes>
</overlay>
<overlay>
<!– 空 groupId/artifactId代表當前構建 –>
</overlay>
<!– 如果有必要的話,就把其它overlays配置在這裡 –>
<overlay>
<id>my-webapp</id>
<groupId>com.example.projects</groupId>
<artifactId>my-webapp</artifactId>
</overlay>
</overlays>
</configuration>
</plugin>
</plugins>
</build>
…
5、Overlay全域性設定
下面的設定能指定全域性性的Overlay和修改所有Overlay的應用方式。
- dependentWarIncludes - 設定此包含預設值適用於所有的overlay。沒有指定includes元素的overlay都將繼承此預設設定。
…
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<dependentWarIncludes>**/IncludeME,**/images</dependentWarIncludes>
</configuration>
</plugin>
</plugins>
…
- dependentWarExcludes - 設定此排除預設值適用於所有的overlay。沒有指定excludes元素的overlay都將繼承此預設設定。
…
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<dependentWarExcludes>WEB-INF/web.xml,index.*</dependentWarExcludes>
</configuration>
</plugin>
</plugins>
…
- workDirectory – 設定overlays臨時提取的目錄。
…
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<!– default value is target/war/work –>
<workDirectory>/tmp/extract_here</workDirectory>
</configuration>
</plugin>
</plugins>
…
- useCache – 設定true時,能啟用webapp架構快取。預設值:false。
…
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<useCache>true</useCache>
</configuration>
</plugin>
</plugins>
…
6、ZIP依賴的覆蓋
要想使一個zip依賴作為一個覆蓋,你必須在外掛配置中指定它。例如你要在Web應用的scripts目錄下通過一個zip覆蓋注入內容,操作如下:
…
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<overlays>
<overlay>
<groupId>zipGroupId</groupId>
<artifactId>zipArtifactId</artifactId>
<type>zip</type>
<targetPath>scripts</targetPath>
</overlay>
</overlays>
</configuration>
</plugin>
</plugins>
…
三、參考資料
1、http://maven.apache.org/plugins/maven-war-plugin-2.1-alpha-2/overlays.html
2、http://maven.apache.org/plugins/maven-war-plugin/overlays.html
相關推薦
maven合併打包多個war包
在WAR外掛的以往版本中,配置並不總是必須的。如果你覺得使用預設設定能很好滿足要求,那就繼續這麼做。但是如果你需要更多的控制,那麼你就歹好好看看下面的部分了。 <overlay>元素包含有下列子元素: id - overlay id。如果你不提供的話,W
Vue.js中用webpack合併打包多個元件並實現按需載入
對於現在前端外掛的頻繁更新,所以多多少少要對元件化有點了解,下面這篇文章主要給大家介紹了在Vue.js中用webpack合併打包多個元件並實現按需載入的相關資料,需要的朋友可以參考下。 前言 隨著移動裝置的升級、網路速度的提高,使用者對於web應用的要求越來越高,web
將多個war包打成ear包部署was
1.建立打包目錄,本人在桌面建立package資料夾,後在package資料夾下建立META-INF目錄,並在改目錄下建立application.xml。 2.將各war包放入package資料夾下 3.編寫application.xml檔案 每個<module&
Android Studio 一個工程打包多個不同包名的APK
公司最近有個特別的需求,同一套程式碼,稍做修改(如包名不一樣,圖示不一樣,應用名不一樣等),編譯出幾個不同的應用。剛好用AS重構完專案,在網上查閱了一些資料,終於搞定!!在這記錄一下。 AS主要是利用gradle來實現這個需求的,具體做法如下: 修改ap
使用maven整合多個web專案,多個war合併
再執行mvn package -f pom-all.xml 即可<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" x
maven 一次打包多個maven專案
maven 一次打包多個maven專案。 使用場景 一個專案由多個子專案組成,每個子專案也是一個maven專案。每次打包需要打包每個子專案,很麻煩,其實可以通過配置一個頂級的pom.xml檔案來解決這個問題,只需要打包頂層的maven專案,即可。如果一個專案有多個子專案的pom.
多個jar包合併成一個jar包
Ant方式注意:ant預設執行build.xml檔案,這個檔案到目前為止是不存在的 需要我們建立。如果不想命名為build.xml,執行時可以使用 ant -buildfile test.xml 命令指明要執行的構建檔案。注意:把你需要合併的jar包 和 build.xml
android studio如何匯出jar包以及如何將多個jar包合併
android studio現在jar包方式的引用可能越來越少,大部分都是通過gradle引入github專案依賴即可,不過今天還是講一講jar包的匯出和合並,算是記錄下吧。一、建立一個新的library專案,專案名為mylibrary。找到build.gradle檔案,檔案
將多個jar包合併為一個jar包的方法
做法很簡單,其實jar檔案就是壓縮檔案,裝了win rar/zip的話就好辦了。 1、選中多個jar檔案,點右鍵“解壓到……”某個目錄,這時候應該會有些檔案重疊,主要是MANIFEST.MF,不管它,解壓完畢,把合併的資訊填入MANIFEST.MF或者寫個readme,隨便你
一鍵打包出多個不同包名,不同應用名稱和圖示的APK
此Demo的原理與多渠道打包的原理相同(動態設定App名稱,應用圖示,替換常量,更改包名,變更渠道)最近有一個需求,就是一套程式碼要根據不同的客戶打包出不同包名,不同appName,圖示的apk,如果一個客戶更改一次打包出一個apk的話效率非常的低,並且不利於維護本demo
將引用的多個jar包通過MANIFEST.MF打包成一個jar
1、新建一個MANIFEST.MF檔案,這裡我引用到一個外部jar包: Manifest-Version: 1.0 Class-Path: lib/jna-3.5.1.jar Main-Class:
如何將多個JAR包合併並混淆
一步一步教你如何匯出JAR包後將多個JAR包合併,並混淆 匯出JAR包: 在eclipse中,右鍵工程,點選export,選擇Jar file,選則需要打包的工程,將工程內除src,lib,以外的檔
Maven打包期依賴war包/Zip包 並解壓至指定目錄的pom配置
首先配置依賴,引入需要依賴的war包和zip包: <dependency> <groupId>com.huawei.mateinfo</groupId> <artifactId>kewen-common-w
46、Maven建立多模組專案(多個war,2017版Eclipse Neon.2)
執行環境: 2017年3月 Eclipse Neon.2 Apache Maven 3.3.9 jdk1.8 注意,此文跟網上所有的建立maven專案有所不同, 就是都會勾選 create a simple project,網上的都是不勾選的。下面就不額外提出了。 首先
Maven實戰(五)---兩個war包的呼叫
開篇前提 1、為什麼要用兩個war包的呼叫? 因為我們Maven專案每個war包都是一條線,前臺用easyui,而每一條線都要引用easyui相關的js、css,還有一些其他的樣式。為了把
ant單個或多個渠道包打包參考文件
操作方法: 1、 單個渠道包 1、下載ant,並配置環境變數 並且配置AndroidSDKTools環境變數 2、測試ant以及android命令是否安裝成功,下圖表明已安裝成功 3、build.xml和 local.properties目錄自動生成 執行cm
MVC 下 打包多個word到壓縮包
情況 ron lena ram lse .sql add 報告 length 第一步 引入dll 控制器代碼 /// <summary> /// 導出Word表格 /// </summary>
android 多個jar包打包成一個
task makeJar(type: Jar){ archivesBaseName = 'lib' from(pr
maven一鍵部署tomcat war包(轉載)
install pom.xml password 一次 輸出 group 通過 cli con 1、環境如下 eclipse、apache-maven-3.0.5、apache-tomcat-7.0.39 2、配置如下 apache-tomcat-7.0.39配
eclipse使用maven install 命令,生成war包中沒有jsp/js/css的解決方法
bsp 文件中 添加 direct pid 路勁 pom.xml文件 lips 命令 在pom.xml文件中添加如下11行代碼就可以了。 <build> <plugins> <plugin>