2011-10-13 52 views
10

我有兩個Maven-Eclipse集成非常惱人的問題,它不時從構建路徑中排除src/main/resources和src/test/resources中的所有資源。Maven/M2Eclipse始終排除我的資源

如果我檢查「屬性」Java編譯路徑「源」我可以看到這兩個文件夾有「排除:**」。

這個問題很容易通過點擊排除的「刪除」來解決,但它確實令人非常沮喪。

該項目設置非常簡單,它有一些模塊和子模塊,但沒有什麼奇特的。我在pom.xmls中沒有關於資源,eclipse或其他任何配置選項(也許我應該?)。

另一個問題是Eclipse不斷在「目標」目錄中報告警告(在「問題」視圖中),它不應該首先給出一個該死的東西。

任何幫助表示讚賞。

謝謝你是進步, 馬克

PS:SpringSource工具套件2.7.0.RELEASE,Maven的集成爲Eclipse 0.12.1.20110112,Maven的2.2.1

+0

你解決了嗎? –

回答

6

這是正確的行爲。當前版本的M2E爲Eclipse IDE內的自動構建過程提供了自己的貢獻者。此構建過程考慮了生成資源和過程資源等的Maven生命週期...即某些項目具有可從配置生成資源並放入編譯後的輸出文件夾的插件。

您在構建路徑中查看的機制僅涉及內置機制的Eclipse IDE,用於將一組輸入源文件夾編譯/彙編到輸出文件夾中。如果Maven和Eclipse都這樣做了,就會有衝突/問題。

有一個在M2E FAQ這個確切點一個鏈接http://wiki.eclipse.org/M2E_FAQ#Why_resource_folders_in_Java_project_have_excluded.3D.22.2A.22

如果你是真正具有不被複制,也許我們可以合作,通過這是爲什麼(因爲那是另一回事)資源的問題,但你的主要問題是關於一個常見的M2E常見問題點。

也許你想升級到org.eclipse.m2e和Indigo作爲很多Maven複雜的maven問題/用法我已經主要解決或有一個解釋的解決方案。

。我會建議你執行一個「Run As - > Maven - > clean」然後一個「Project - > Clean」,然後啓用自動bulding(這是爲了允許基於Eclipse的自動構建發生,不要使用Run作爲 - > Maven來構建來測試這一點)。現在在eclipse之外打開一個文件管理器,然後手動檢查輸出文件夾中是否有你不認爲正在被複制的資源。你會發現他們在那裏一樣。

我同意關於target/**目錄中的項目(可能是Validation)的警告,雖然Eclipse有辦法從驗證中手動排除target/**目錄,但這個選項不會超出項目clean(when目標目錄被刪除)。

因此,總是在等待大型項目中項目的驗證,這有點令人討厭。

也許我試着看看是否可以創建一個Maven Eclipse連接器插件來執行此操作,即綁定到構建生命週期中並自動在目標文件夾上應用排除驗證。

+0

非常感謝您的詳細解答。 – nihilist84

+2

我仍然排除**,我沒有得到任何答案如何解決它... – blackuprise

+0

排除**,是正確的,因爲它應該是,你顯然不明白爲什麼它是正確的解釋,請研究並再次閱讀。 –

0

T_T不是一個好的解決方案。如果沒有maven更新,則不會複製資源


maven資源:生命週期映射中標記爲忽略的資源階段將導致此問題。

就像Miles上面指出的那樣,eclipse不會複製資源,因爲它假定maven會爲你做。然後,如果在maven中執行作業的資源:資源階段未執行,則會在運行時收到未找到文件異常。

檢查這個開放

項目 - >屬性 - > maven->生命週期映射

,看看是否資源:資源被標記爲忽​​略或沒有。

來解決它Windows的>優先 - > maven->生命週期mapping->打開的工作區的生命週期的映射元數據

然後改變

<action> 
    <ignore /> 
    </action> 

<action> 
    <execute /> 
    </action> 

爲目標resources

重新加載元數據&更新maven項目

應該解決問題。

+0

FWIW did你確定要爲build-helper-maven-plugin安裝m2e連接器嗎?你是否仍然需要上述的答案?據我所知,這使得影響classpath/building的很多目標/插件正常工作。 –