Question

I created my own build.xml which has:

<target name="compile">
    <mkdir dir="build"/> 
    <javac destdir="build"> 
        <src path="src"/> 
    </javac>
</target>

<target name="build" depends="compile">
    <mkdir dir="dist"/>
    <jar destfile="dist/app.jar" basedir="build" />
</target>

<target name="run" depends="compile">
    <java classname="webserver.Loader" classpath="build" fork="true" />      
</target>

It works great. When I call ant run so it compiles and runs my application, but my application has a package with icons and it isn't moved to a folder "build" so my application ends with an exception that it couldn't locate my icons. When I move them by myself then it works.

I tried to use

<copy todir="build/app/icons">
    <fileset dir="src/app/icons"/>
</copy>

It works, but I would like to do it without the copy command. Is there any parameter to javac? Or something else?

Thank you for answer.

Was it helpful?

Solution

Sorry, you will need to copy non-java files manually. Resources are technically not "source". The command-line javac will not copy resource files from your source directory to the output directory, neither will ant's javac task.

OTHER TIPS

There is no such parameter. You can copy all sorts of files between your directories with:

<copy todir="build">
    <fileset dir="src"
             includes="**/*.xml,**/*.properties,**/*.txt,**/*.ico" />
</copy>

You can do this using the fileset element of the jar task instead of manually copying the files. For example:

<jar destfile="dist/app.jar" basedir="build">
    <fileset dir="src" includes="app/icons/**" />
</jar>

This will copy everything in src/app/icons/ to the app/icons path in your .jar file.

No, there isn't. The copy task is the correct way to copy resources into your build folders.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top