我有一个包含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这样做呢?
答案 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 ;;我想详细说明答案,以便尽快给你解决。