Ankit
Ankit

Reputation: 6980

How to use Ant include non-java resource files with compiled classes

I have a Java project with all source files in the src folder. This src folder contains several packages. Some of these packages/folders do not include any Java code. They just contain some images that I use in the application as icons.

The directory structure is similar to the following.

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

Now, when I use the javac task, it compiles all the Java files into class files and stores them in the destination directory that I specify. However, an non-java files remain as is in the source folder.

I referred this Question on SO. However, I think in my case I want to include all non-Java resource files (without the need to explicitly specifying what files to be moved) automatically into the build directory (one that contains all the class files) while following the same directory structure as in source.

Pardon me if I am missing something very trivial, but how do I ask Ant to do this?

Upvotes: 5

Views: 7561

Answers (2)

HouseFragance
HouseFragance

Reputation: 131

Just to complete the previous answer, the block

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

goes before the task javac

<javac [...]

and inside the target compile

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

then

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

   <javac srcdir="[...]" destdir="&&&" >
   </javac>
</target>

in my case the attribute "todir" of tag "copy" it's the same of the attribute "destdir" of tag "javac"; I wanted to detailing the answer in order to give you a resolution as immediate as possible.

Upvotes: 3

Tim Pote
Tim Pote

Reputation: 28029

Use the ant copy task to copy your resources into the classes directory (or wherever your .class files are stored). By default, ant keeps the directory structure.

For example:

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

Upvotes: 7

Related Questions