maven-war-plugin:Maven打war包時,排除和包含指定檔案或目錄
阿新 • • 發佈:2018-12-27
通過使用<packagingIncludes>和<packagingExcludes>配置引數,可以在WAR檔案中包含或排除某些檔案或者目錄。
可以通過逗號分隔,配置多個檔案或者目錄路徑。
使用**等萬用字元表示多個目錄,使用*表示檔案或目錄名稱的可選部分。
**:可以刪除當前資料夾和資料夾裡的內容
示例1:從WEB-INF / lib中排除所有JAR檔案
<project> ... <build> <plugins> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> <configuration> <packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes> </configuration> </plugin> </plugins> </build> ... </project>
示例2:排除resource檔案或者只包含Java檔案
WEB程式結構如下:
使用以下配置,我們可以排除resource裡的配置檔案或者只包含Java檔案
<plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> <configuration> <!--注意:這是打包後的路徑--> <!-- **:可以刪除當前資料夾和資料夾裡的內容 --> <packagingExcludes> <!--排除resources下面的config檔案中的properties檔案--> <!--WEB-INF/classes/config/*.properties--> <!--排除resources下面的config檔案和config裡面的檔案--> WEB-INF/classes/config/** </packagingExcludes> <!--只包含com和com下面的所有資料夾和檔案【即,只打包Java檔案】--> <!--<packagingIncludes> WEB-INF/classes/com/** </packagingIncludes>--> </configuration> </plugin>
示例3:正則表示式排除檔案
有時甚至這樣的萬用字元還不夠。在這些情況下,您可以使用%regex []語法的正則表示式。
在此示例中,我們要排除任何commons-logging和log4j JAR,但我們不希望排除log4j-over-slf4j JAR。
所以我們要排除log4j- <version> .jar,但保留log4j-over-slf4j- <version> .jar。
<project> ... <build> <plugins> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> <configuration> <!-- Exclude JCL and LOG4J since all logging should go through SLF4J. Note that we're excluding log4j-<version>.jar but keeping log4j-over-slf4j-<version>.jar --> <packagingExcludes> WEB-INF/lib/commons-logging-*.jar, %regex[WEB-INF/lib/log4j-(?!over-slf4j).*.jar] </packagingExcludes> </configuration> </plugin> </plugins> </build> ... </project>