2012-08-08 27 views
2

有什麼辦法可以強制執行javac任務來僅調用註釋處理,而無需編譯。 -proc:only根據javac documentation,javac選項應該執行此類行爲。Ant:javac與proc:只能從Ant?

但Ant構建的下面的代碼片段:

<target name="apt"> 
    <javac srcdir="src" destdir="bin" includeantruntime="false"> 
     <compilerarg value="-proc:only"/> 
    </javac> 
</target> 

編譯項目反正。我嘗試了其他<compilerarg>標籤版本(例如line而不是value),但沒有任何幫助。

+0

您可能嘗試使用作爲可執行文件的javac.exe任務 – Rebse 2012-08-09 19:04:42

+0

是的,但是我需要javac的要點是可以編譯(或者實際上是在整個目錄結構中處理註釋)。我可以用exec來做同樣的事嗎? – 2012-08-10 06:35:07

+0

因此,使用可執行javac的任務 – Rebse 2012-08-10 12:03:57

回答

2

避免指定任務的「destdir」屬性,或使用空目錄作爲類文件的目標。然後,Ant「javac」任務將查找基本目錄中的類文件(如果將「destdir」未設置)或空目錄中。因爲它不會在那裏找到類文件,所以它不會從編譯中排除潛在的最新源,並在「srcdir」屬性中指定的目錄中對源文件執行「javac」。因此

您的代碼應該是這樣的:

<target name="apt"> 
    <javac srcdir="src" includeantruntime="false"> 
     <compilerarg value="-proc:only" /> 
    </javac> 
</target> 

,或者,如果你使用的空目錄的方法,像這樣:

<target name="apt"> 
    <mkdir dir="empty" /> 
    <javac srcdir="src" destdir="empty" includeantruntime="false"> 
     <compilerarg value="-proc:only" /> 
    </javac> 
</target> 

第二種方法稍微複雜一些,但多一點清潔。通常你的項目會有一個輸出目錄,你可以在其中放置編譯類和打包的jar,所以在那裏添加一個額外的空目錄不會有什麼影響。從Ant 1.9.4開始,即使在「javac」任務中簡單的「強制」屬性可以解決此問題,我也沒有發現任何其他方式可以獨立於編譯而從Ant進行註釋處理。