2010-01-27 102 views
0

我希望螞蟻能夠確定何時不重新編譯最新的文件 - 不幸的是它一直在發生。我的構建目標只包含:螞蟻一直在重新編譯

<javac srcdir="configuration" destdir="${build_env}"> 
    <compilerarg value="-Xlint"/> 
</javac> 

在詳細螞蟻輸出我得到:

conf: 
[javac] MissingConfigurationException.java added as MissingConfigurationException.class doesn't exist. 
[javac] TestConfiguration.java added as TestConfiguration.class doesn't exist. 
[javac] TestConfigurationStorage.java added as TestConfigurationStorage.class doesn't exist. 
[javac] Compiling 3 source files to /blah/build 

,但他們確實存在,並在「/廢話/編譯/ COM /胡說/配置/可.. 。「 目錄。

我該如何解決這個問題?

+1

見http://stackoverflow.com/questions/ 827609/why-does-ant-compile-all-classes-each-run – 2010-01-27 18:26:54

+0

謝謝。是的 - 該鏈接也解決了我的問題。 – viraptor 2010-01-27 22:27:28

回答

1

我在過去曾經見過這個類,該類在與.java文件中聲明的包不同的位置定義。例如,如果我們在com/stackoverflow/ant/error中查找一個名爲AJavaFile.java的文件,它最好有包定義爲:

package com.stackoverflow.ant.error; 

,或者javac編譯器就會把它放在一個不同的地方比由包聲明的預期。

0

有這個相同的混淆問題。

您應該嘗試從正在運行ant的文件位置到您的文件位置的路徑,而不僅僅是其中的相對目錄。

對於javac而言,當它們與您的「構建」中的內容完全不匹配時,試圖正確地確定它們的問題似乎存在問題。所以它只是在這些情況下編譯一切。如果你仔細想想,這種做法是有道理的,儘管它有一些缺點。已經構建的路徑需要完全匹配要編譯的內容。如果沒有被告知從寫入「build」目錄的相同基本目錄開始,它就無法向前看並解決完整路徑。

如果你的代碼是在/胡說/編譯/ COM /胡說/配置/ ...然後嘗試

<javac srcdir="/blah/" destdir="${build_env}"> 
    ... 
</javac> 

<javac destdir="${build_env}"> 
    <src path="blah/"/> 
    ... 
</javac>