2012-05-05 24 views
4

我有一個Java項目,其中包含src文件夾中的所有源文件。這個src文件夾包含幾個包。其中一些軟件包/文件夾不包含任何Java代碼。它們只包含我在應用程序中用作圖標的一些圖像。如何使用Ant包含編譯類的非java資源文件

目錄結構與以下內容類似。

src/ 
com/ 
    example/ 
     pk1/  # This contains only some Java files. 
     pk2/  # This will contain some XML and Java code. 
     im1/  # This subfolder will contain just the images 

現在,當我使用javac任務,它編譯所有的Java文件到我指定的目標目錄中的類文件,並將它們存儲。但是,非java文件仍保持原始文件夾中的狀態。

我在SO上提到了這個Question。然而,我認爲在我的情況下,我想包括所有非Java資源文件(不需要明確指定要移動的文件)到build目錄(其中包含所有類文件),同時遵循相同的目錄結構如來源。

對不起,如果我錯過了一些很瑣碎的事情,但我該如何讓Ant做到這一點?

回答

7

使用螞蟻copy任務將您的資源複製到classes目錄(或任何存儲您的.class文件的地方)。默認情況下,ant保持目錄結構。

例如:

<copy todir="classes"> 
    <fileset dir="com/example"> 
    <exclude name="**/*.java"/> 
    </fileset> 
</copy> 
3

只是爲了完成以前的答案,塊

<copy todir="classes"> 
    <fileset dir="com/example"> 
    <exclude name="**/*.java"/> 
    </fileset> 
</copy> 

任務的javac

<javac [...] 

之前和目標裏面去編譯

<target name="compile" [...] 

然後

<target name="compile" [...]> 
    <copy todir="&&&" [...]> 
     [...] 
    </copy> 

    <javac srcdir="[...]" destdir="&&&" > 
    </javac> 
</target> 
在我的情況標籤的屬性中「todir」

「複製」這是相同的標籤的「javac」屬性「DESTDIR」的;我想詳細說明答案,以便儘可能立即爲您提供解決方案。