2014-09-13 74 views
1

有人可以解釋我這兩個資源定義之間的區別嗎?爲什麼jar文件被排除在外,但包含在第二個資源中?我不明白,這兩個聲明:這兩個Maven資源定義有什麼區別?

<resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
      <excludes> 
       <exclude>**/*.jar</exclude> 
       <exclude>myDummyPath/war/l10n/*.*</exclude> 
      </excludes> 
     </resource> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>false</filtering> 
      <includes> 
       <include>**/*.jar</include> 
      </includes> 
     </resource> 
</resources> 
+0

@BoristheSpider爲什麼你消除了一個正確的標籤,並在這裏添加一個錯誤的標籤?這是一個'java'問題,而XML是偶然的。 – chrylis 2014-09-13 13:21:35

+0

@chrylis對不起,我試圖讓語法突出顯示工作 - 最終hexafraction糾正它。似乎你在語言提示中需要'language:'而不是'lang:'。 – 2014-09-13 13:23:25

+0

@chrylis啊,那不行。似乎沒有'xml'標記語法突出顯示不是太有幫助。 – 2014-09-13 13:26:01

回答

0

看看不同filtering設置。作者希望Maven在某些文件(可能是配置文件)中替換佔位符,但不要破壞二進制jar文件。

2

第一個區別是明顯的路徑:

<excludes> 
    <exclude>**/*.jar</exclude> 
    <exclude>myDummyPath/war/l10n/*.*</exclude> 
</excludes> 

和:

<includes> 
    <include>**/*.jar</include> 
</includes> 

顯然,第一個聲明排除I10n下的所有文件.jar和一切。另一個路徑包括只有.jar文件。

接下來,第一個聲明啓用篩選,第二個聲明禁用篩選。在maven中,過濾(默認情況下)將用它們的值替換所有可變佔位符${...} - 有關更多信息,請參閱the documentation

因此,在第一個聲明中,除.jar文件和本地化文件之外的所有資源都通過maven替換值來替代佔位符的值,例如${project.name}

在第二個聲明中,所有.jar資源都被複制,而不進行過濾。

+0

你是什麼意思與複製?我不明白這個 – Marwief 2014-09-13 13:38:52

+0

那麼,當一個項目建成時,文件被從源代碼('/ src/main /')複製到構建的製造品 - '.jar'或'.war'等等。這是一個標準的構建過程 - 如果你不知道這一點,那麼你可能需要閱讀[文檔](http://maven.apache.org/guides/getting-started/index.html)。 – 2014-09-13 14:16:50