1. 程式人生 > >maven-war-plugin:Maven打war包時,排除和包含指定檔案或目錄

maven-war-plugin:Maven打war包時,排除和包含指定檔案或目錄

通過使用<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>