如何使用Ant包括带编译类的非java资源文件

时间:2012-05-05 02:59:50

标签: java ant

我有一个包含src文件夹中所有源文件的Java项目。这个src文件夹包含几个包。其中一些包/文件夹不包含任何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这样做呢?

2 个答案:

答案 0 :(得分:7)

使用ant copy任务将资源复制到classes目录(或存储.class文件的任何位置)。默认情况下,ant会保留目录结构。

例如:

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

答案 1 :(得分: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>

在我的情况下属性&#34; todir&#34;标签&#34; copy&#34;它与属性&#34; destdir&#34;相同标签&#34; javac&#34 ;;我想详细说明答案,以便尽快给你解决。