2010-09-20 94 views
38

我試過this從我的WAR文件中排除整個目錄($ {basedir}/src/main/webapp/webscripts),但失敗。哪裏不對?maven2:不包括來自WAR的目錄

這不起作用:

<configuration> 
    <webResources> 
     <resource> 
     <directory>${basedir}/src/main/webapp/webscripts</directory> 
     <excludes> 
     <exclude>**/*.*</exclude> 
     </excludes> 
     </resource> 
    </webResources> 
</configuration> 

這太:

<configuration> 
    <webResources> 
     <resource> 
     <directory>${basedir}/src/main/webapp</directory> 
     <excludes> 
     <exclude>**/webscripts</exclude> 
     </excludes> 
     </resource> 
    </webResources> 
</configuration> 

有人能幫忙嗎?

+0

只要將它移動到不同的位置。爲什麼webapps下的webscript? – khmarbaise 2010-09-20 10:09:33

回答

77

這兩種解決方案都無濟於事,因爲它們會添加一個額外的資源,然後將其停用。 webapp源文件夾默認情況下被複制,沒有資源機制。

機制停用其中的一部分是通過<warSourceExcludes>參數,如下所示:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.1</version> 
    <configuration> 
     <warSourceExcludes>webscripts/**</warSourceExcludes> 
    </configuration> 
</plugin> 
+15

只是另外,如果你想排除幾個文件夾在逗號後面添加它們,不要使用幾個warSourceExcludes,它將不起作用 – 2011-12-22 16:10:50

+0

如何排除多個目錄。 – 2016-05-20 13:20:33

6

在版本2.1-α-1,這是正確命名warSourceExcludes。正確的參數是關於使用packagingExcludes

例(戰爭不包括WEB-INF /靜/文件夾):

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.1.1</version> 
    <configuration> 
     <warName>searchservice-web</warName> 
     <packagingExcludes>WEB-INF/statics/</packagingExcludes> 
    </configuration> 
</plugin> 
+2

這是不正確的,誤導了我一段時間。我正在使用版本2.1.1,但packagingExcludes不起作用,而warSourceExcludes卻起作用。它看起來像新版本的packagingExcludes是使用正確的標籤。 – Noremac 2013-07-10 18:19:33

29

warSourceExcludes似乎並沒有一直只是改名packagingExcludes

warSourceExcludes:逗號分隔的標記列表複製warSourceDirectory的內容時要排除。

packagingExcludes:逗號分隔的令牌列表,以在打包之前從WAR中排除。這個選項可以用來實現小巧的WAR用例的 。

有一個很大的不同:隨着packagingExcludes,這個標記是完全從最後的戰爭文件排除在外。使用warSourceExcludes,當將war目錄複製到war文件時,令牌被忽略。 其結果是,如果令牌存在於webappDirectory例如,它們將不被使用warSourceExcludes時,但使用packagingExcludes時將被忽略。

和工作語法示例:

<warSourceExcludes>**/${project.artifactId}/**</warSourceExcludes> 
+0

你是什麼意思「複製時忽略」?如果它們未被複制到war文件中 - 它們不包含在war文件中,並且與packagingExcludes相同。你能更清楚地解釋它嗎? – kolobok 2016-05-30 07:37:01

+0

packagingExcludes不會複製到最終戰爭,而warSourceExcludes不會複製到將被壓縮爲戰爭的warDirectory。 – Frohlich 2016-08-31 21:06:33

1

有一個場景,我必須排除可能由*scripts匹配兩個文件夾和他們在資源文件夾中。第一個困惑是是否提供排除值爲src/main/resources/*scriptsWEB-INF/classes/*scripts,即編譯前或編譯結構。

提供/**以獲取從war文件中排除的整個目錄非常重要。在我的情況下,*scripts/**

這裏是工作的最終配置:

<packagingExcludes>WEB-INF/classes/*scripts/**</packagingExcludes>