2012-08-02 70 views
13

我只是想知道這一點,當我給mvn安裝而不做'乾淨',maven只編譯修改後的java文件。 maven如何識別java文件是否被修改?我相信它不使用文件的最後修改的屬性。maven如何編譯修改後的java文件?

我的理由:我有一個模塊,在合併svn的一個變更後,我給了mvn install,它沒有編譯修改後的文件,當我看到這個變化時,我看到'long'被修改爲'吸'和二傳手'長'。

所以我只是想知道如果一個Java文件已經改變或沒有改變,maven如何識別?

(P.S我使用Apache Maven的3.0.3,如果該事項)

+0

我猜它使用svn st? – Fakrudeen 2012-08-02 07:31:42

+0

如果模塊沒有受版本控制,該怎麼辦? – 2012-08-02 07:32:33

+0

然後(類文件的時間<源文件的時間)=>修改 – Fakrudeen 2012-08-02 07:45:08

回答

15

我相信Maven的編譯器插件使用的源代碼和類文件的最後修改日期,以確定是否重新編譯是必要的。

編譯器website的信息比較短,但compiler:compile目標頁面具有以下屬性的信息,該屬性可以精確調整陳舊度計算:http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#staleMillis。這是關於陳舊性的唯一官方聲明。

+0

猜測我的看法是錯誤的,它確實使用最後修改後的屬性。感謝您的鏈接! – 2012-08-02 08:13:26

5

不知道有關行家了,我可以告訴你,一般來說,「讓」般的工具使用「最後一次修改」時間戳,這可以解釋你與SVN的問題(見Wikipedia on Subversion's weaknesses

+0

你是對的!謝謝 :) – 2012-08-02 08:13:52