2012-11-16 26 views
9

我們有一個Maven的項目(打包成JAR)與的Java文件。最近在此項目中添加了新的Java源文件。 Java文件添加的路徑與其包聲明不匹配。正如所料,Eclipse會在類中顯示錯誤。但是,Maven很好地構建了這個項目。在生成的JAR文件中,.class文件存在於包聲明指定的路徑中。我們嘗試將Java源文件移動到其他不正確的文件夾(即與軟件包聲明不同),但每當Maven構建好項目時。的Maven + Java包聲明

那麼,Maven會忽略.java文件存在的實際目錄嗎?它是否只考慮包裝聲明?

+0

請加上喜歡你的POM中的一些細節(ATLEAST它的包裝像戰爭,罐子等),文件夾結構,你添加新文件的路徑等。 –

+0

我已經提到過,包裝在我的問題中是JAR。至於其他細節,抱歉,但我不明白這對問題會有什麼幫助。無論如何,我只能提供示例值,因爲我正在處理一些專有代碼。 – Vasan

+0

其實我只是想知道你的文件在哪裏,因爲maven是非常結構化的。但無論如何,正如你所說,你的Maven構建工作正常,它沒問題。你可以做的一些事情是,檢查你是否在日食中正確配置了Maven插件。 THen不是在eclipse中添加項目,而是在eclipse中將項目「導入」爲「Maven Project」,那麼它應該與maven build同步。 –

回答

8

Maven編譯器插件內部彙編了一個命令行調用,該調用包含傳遞給javac的參數,每個源文件使用一個參數(使用the sourcefiles version of the javac call)。它確實也爲像註釋處理這樣的元功能傳遞實際的源文件夾,但是當單個源文件傳遞給javac時,這些文件優先,編譯器沒有有效的方法來找出哪個文件屬於哪個源文件夾,驗證包結構。

Maven的編譯器插件在內部使用Plexus Compiler API,你可以在這兩個類的相關代碼:

+0

有道理,謝謝你的簡潔的答案和指針! – Vasan