Search code examples
javaantjarfileset

Ant jar task - Include files not underneath basedir


I am trying to write an ant target that will create a jar based on a bunch of java files and some properties files, but am having trouble including the properties files the way the project is set up currently.

These are the ant targets I have:

1 - Compile the java souce files from the "myjar.src" folder and put the resulting classes into a "myjar.classes" folder. Once this is done copy all non .java files from "myjar.src" to "myjar.classes".

2 - Create the jar using the "jar" command using basedir = ${myjar.classes} and tell it to include everything.

These are the ant targets I want:

1 - Compile the java souce files and put the resulting classes into a "myjar.classes" folder. Only .java files are included

2 - Create the jars using the "jar" command using basedir = ${myjar.classes.location} but also include the .properties and .xml files from "myjar.src."

The key difference is I want the properties and xml files from "myjar.src" to be included when I package up the classes in "myjar.classes" using basedir = ${myjar.classes} - How do I include these fies when they are not underneath "myjar.classes"?

This is the ant target I want to modify:

<CreateManifest title="myjar classes etc"/>
        <jar 
            destfile="${myProject.build.jars.dir}\ta_test_driver.jar" 
            basedir="${myjar.classes}" 
            manifest="${manifest}">
            <include name="**"/>
        </jar>

The reason I am not just using a directory one level up for basedir is that none of the other jar creation calls in the project do that, and I am hesitant to change that for just this one. I did try to do that, but had trouble specifying the right directory. (There are other jars that use a similar directory structure, and I don't want to interfere with them either now or in the future.) I was just wondering if these is a better way to do this? Thanks very much.


Solution

  • I managed to figure this out from here: How to include file in Jar through Ant at specific location

    This was my modified ant call in the end:

        <CreateManifest title="myjar classes etc"/>
        <jar 
            destfile="${myProject.build.jars.dir}\ta_test_driver.jar" 
            basedir="${myProject.classes}\ta_test_driver" 
            manifest="${manifest}">
            <include name="**"/>
             <zipfileset dir="${myjar.src}" 
                includes="**/*.xml, **/*.properties, **/*.gif"
                />   
        </jar>
    

    Notice the zipfileset tag.