Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

adding non-code resources to jar file using Ant

Tags:

I am in the process of packaging my java application into a jar file. I am using ant and eclipse. I need to actually include in the jar a couple of separate, non-code files (xml and txt files) directly under the root folder, not in the same place as the code.

I am trying to use includesfile, but that doesn't seem to work, here is my ant target:

<target name="distribute" depends="compile" includesfile="readthis.txt">     <jar destfile="${distributionDir}/myjar.jar" >         <fileset dir="${outputDir}"/>     <fileset dir="${sourceDir}"/>                </jar> </target> 

The above works fine when I omit the includesfile argument. Plus, I need to add multiple non-code files. These files are located directly under the root project folder in Eclipse, and not within any java packages.

Also, as you can see above, I am basically including to the jar my source code as well. Is there a way to tell the jar task to put the source code in a separate folder from the compiled code?

As a compile or build task, Ant easily can separate source code from the compiled classes. But is there a way to do it within a jar file as well?

Many thanks for your time!

like image 728
denchr Avatar asked Aug 01 '09 14:08

denchr


People also ask

How do I add a resource file to a jar file?

1) click project -> properties -> Build Path -> Source -> Add Folder and select resources folder. 2) create your JAR!

Can jar contain resources?

jar ) contain your executable classes and resource files. A jar can also contain other jar files, which is useful when your program needs some library which is packaged in a jar.

What is used to create jar with all required classes in Ant?

jar using the classes from the faxapp. If we want to make the util. jar an executable jar file, we need to add the manifest with the Main-Class meta attribute. To execute the jar task, wrap it inside a target, most commonly, the build or package target, and execute them. Running Ant on this file creates the util.

Which jar file has the implementation code for the Ant custom task?

I include commands to demonstrate how this works on a command line. Those of you using an IDE should include the “ant. jar” file located in the “lib” folder of your Ant installation.


1 Answers

You shouldn't have an includesfile attribute in a target to start with, and I suspect you've misunderstood the point of it anyway - the idea is that the file you specify with includesfile contains patterns for which files to include, if you don't want to put them into your Ant file.

It strikes me that all you need is an extra fileset containing the appropriate files you need. For example, for readthis.txt:

<target name="distribute" depends="compile">   <jar destfile="${distributionDir}/myjar.jar" >     <fileset dir="${outputDir}"/>     <fileset dir="${sourceDir}"/>     <fileset file="readthis.txt" />   </jar> </target> 

I would also suggest that you create a new directory for the resources, so you can do:

<target name="distribute" depends="compile">   <jar destfile="${distributionDir}/myjar.jar" >     <fileset dir="${outputDir}"/>     <fileset dir="${sourceDir}"/>     <fileset dir="${resourcesDir}" />   </jar> </target> 

with no hassle. This will also keep your directory structure cleaner, making it easier to find things from the top downwards.

like image 94
Jon Skeet Avatar answered Sep 25 '22 01:09

Jon Skeet