5

我有一个 Java 项目,文件src夹中包含所有源文件。这个 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 上提到了这个问题。但是,我认为在我的情况下,我想将所有非 Java 资源文件(无需显式指定要移动的文件)自动包含到build目录(包含所有类文件的目录)中,同时遵循相同的目录结构在源。

如果我遗漏了一些非常琐碎的事情,请原谅我,但是我该如何让 Ant 这样做呢?

4

2 回答 2

7

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

例如:

<copy todir="classes">
  <fileset dir="com/example">
    <exclude name="**/*.java"/>
  </fileset>
</copy>
于 2012-05-05T03:01:27.293 回答
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>

在我的例子中,标签“copy”的属性“todir”与标签“javac”的属性“destdir”相同;我想详细说明答案,以便尽快为您提供解决方案。

于 2015-09-25T08:32:42.677 回答