2010-09-02 56 views
3

我已經看到了這一點:的Eclipse的.classpath排除模式

<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/> 

在創建一個新的Maven項目時,但我似乎無法弄清楚我的Eclipse .classpath文件多次 - 在赫克是什麼排除=「**」是什麼意思?

編輯:我想我在這裏試圖得到的是,雖然它似乎排除=「**」應該排除在src /主要/資源的一切,但 - 它沒有。當我創建一個測試項目並放入文件夾(例如:META-INF)時,它們實際上顯示在目標/類中。爲什麼?那麼排除的意義是什麼?

TIA

回答

1

由於您使用m2eclipse的,在您的項目。項目文件包含

<buildCommand> 
    <name>org.maven.ide.eclipse.maven2Builder</name> 
    <arguments> 
    </arguments> 
</buildCommand> 

這是壓倒一切的Java的建設者,並複製在/ src目錄/主/資源文件夾到/目標/ classes目錄。

如果您要刪除上述構建命令並清理項目,則/ src/main/resources中的文件應該消失。如果你添加了build命令,你的文件應該會重新出現。

我意識到這並不回答所謂排除=「**」的問題,但這解釋了您所看到的行爲。

2

**的是,在基本路徑每個文件和所有文件匹配它的所有子目錄一個特殊的圖案。在你的例子中,它只是排除src/main/resources內的所有文件。

+1

那麼爲什麼當我做一個項目清理時,src/main/resources中的所有內容仍然以target/classes結尾呢? – javamonkey79 2010-09-02 19:44:06

3

它基本上意味着'排除一切'。 **是一個匹配目錄樹中任何位置的任何文件或目錄的通配符。

它對於Subversion .svn文件夾很有用,例如,它可以出現在源樹中的任何級別。在這種情況下,您可以排除**/.svn,這將匹配任何.svn文件夾。在這種情況下,**/與樹中的任何目錄匹配。

+0

然而,當我將文件夾和源文件添加到src/main/resources時,它們仍然顯示在target/classes中;這似乎並不排隊。 – javamonkey79 2010-09-02 19:48:55