I am trying to build a runnable JAR file of a project by using build.xml file and the prompt code
cd <the directory of you application>
ant -f bin/build.xml jar
But I have exceptions when I run the JAR because I cannot add the external JAR.
the build.xml is as follows:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!--
This file was generated by Jason 1.3.9-alpha
http://jason.sf.net
Ocak 11, 2014 - 01:09:12
-->
<project name ="virtualClassroom"
basedir=".."
default="run">
<property name="mas2j.project.file" value="virtualClassroom.mas2j"/>
<property name="debug" value=""/> <!-- use "-debug" to run in debug mode -->
<property name="build.dir" value="${basedir}/bin/classes" />
<property name="jasonJar" value="C:\Users\Emre\Desktop\MasterThesis-BDI\Jason-1.3.9\Jason-1.3.9\lib\jason.jar"/>
<property name="JavaCsBridgeJar" value="C:\Users\Emre\Desktop\MasterThesis-BDI\virtualClassroom\lib\JavaCsBridge.jar"/>
<path id="project.classpath">
<pathelement location="${basedir}"/>
<pathelement location="${build.dir}"/>
<pathelement location="${JavaCsBridgeJar}"/>
<pathelement location="${jasonJar}"/>
<fileset dir="${basedir}/lib" > <include name="*.jar" /> </fileset>
</path>
<!-- tasks the user can override in his/her c-build.xml script -->
<target name="user-init">
</target>
<target name="user-end">
</target>
<target name="init">
<mkdir dir="${build.dir}" />
<antcall target="user-init" />
</target>
<target name="compile" depends="init">
<condition property="srcdir" value="${basedir}/src/java" else="${basedir}" >
<available file="${basedir}/src/java" />
</condition>
<javac srcdir="${srcdir}" destdir="${build.dir}" debug="true" optimize="true" includeantruntime="false" >
<classpath refid="project.classpath"/>
</javac>
</target>
<target name="jar" depends="compile">
<delete file="${ant.project.name}.jar" />
<copy file="${jasonJar}" tofile="${ant.project.name}.jar" />
<copy file="${JavaCsBridge}" tofile="${ant.project.name}.jar" />
<copy file="${mas2j.project.file}" tofile="default.mas2j" />
<jar update="yes" jarfile="${ant.project.name}.jar" >
<fileset dir="${basedir}">
<include name="**/*.asl" />
<include name="**/*.mas2j" />
</fileset>
<fileset dir="${build.dir}">
<include name="**/*.class" />
</fileset>
<manifest>
<attribute name="Main-Class" value="jason.infra.centralised.RunCentralisedMAS"/>
</manifest>
</jar>
<delete file="default.mas2j" />
</target>
<target name="jnlp" depends="jar" >
<mkdir dir="${basedir}/${ant.project.name}-jws"/>
<java classname="jason.infra.centralised.CreateJNLP"
failonerror="true" fork="yes" dir="${basedir}/${ant.project.name}-jws" >
<classpath refid="project.classpath"/>
<arg line="${ant.project.name} ${mas2j.project.file}"/>
</java>
<copy todir="${basedir}/${ant.project.name}-jws" failonerror="no">
<fileset dir="${basedir}/lib" includes="**/*.jar" />
<fileset dir="${basedir}" includes="${ant.project.name}.jar" />
<fileset dir="C:\Users\Emre\Desktop\MasterThesis-BDI\Jason-1.3.9\Jason-1.3.9/src/images" includes="Jason-GMoreau-Icon.jpg" />
</copy>
<signjar jar="${basedir}/${ant.project.name}-jws/${ant.project.name}.jar" alias="jason"
storepass="rbjhja" keypass="rbjhja" keystore="C:\Users\Emre\Desktop\MasterThesis-BDI\Jason-1.3.9\Jason-1.3.9/src/jasonKeystore" />
<echo message="**" />
<echo message="** Java Web Start application created in directory ${ant.project.name}-jws" />
<echo message="** Update the codebase (in the second line of the .jnlp file)" />
<echo message="** with the URL where you will upload the application." />
<echo message="**" />
</target>
<target name="run" depends="compile" >
<echo message="Running project ${ant.project.name}" />
<java classname="jason.infra.centralised.RunCentralisedMAS"
failonerror="true" fork="yes" dir="${basedir}" >
<classpath refid="project.classpath"/>
<arg line="${mas2j.project.file} ${debug} "/>
<!-- jvmarg line="-Xmx500M -Xss8M"/ -->
</java>
<antcall target="user-end" />
</target>
<target name="clean" >
<delete failonerror="no" includeEmptyDirs="true" verbose="true">
<fileset dir="${basedir}" includes="**/*.class"/>
</delete>
</target>
</project>
Do anyone know what to do?
Thanks
Firstly, you need to tell us exactly which class is giving a NoClassDefFoundError
As a generic answer, the explanation is that the particular class was available during compile time but missing during runtime. This is a common issue with jar executables.
Solution : Either include the missing classes in the jar itself or add those to the system classpath.
Related
I'm receiving an error message from Ant when I try to run the Javadoc ant task.
"BUILD FAILED
/data/data/com.termux/files/home/LearnJava/Observer/build.xml:39: No source files, no packages and no modules have been specified."
The build files reside at:
https://github.com/Fernal73/LearnJava/blob/master/Observer/build.properties
version=1.0.0
main.class=com.javacodegeeks.patterns.observerpattern.TestObserver
main.class1=com.javacodegeeks.patterns.observerpattern.Test
cs.properties=../checkstyle.properties
gformat.properties=../gformat.properties
ant.build.javac.source=1.7
ant.build.javac.target=1.7
packages=com.javacodegeeks.patterns.observerpatern.*
and
https://github.com/Fernal73/LearnJava/blob/master/Observer/build.xml
<?xml version="1.0"?>
<project name="Observer" default="main"
basedir=".">
<property file = "build.properties"/>
<property file = "${cs.properties}"/>
<property file = "${gformat.properties}"/>
<!-- Sets variables which can later be used. -->
<!-- The value of a property is accessed via ${} -->
<property name="src.dir" location="." />
<property name="build.dir" location="." />
<property name="dist.dir" location="dist" />
<property name="docs.dir" location="docs" />
<taskdef resource="${cs.taskdef.resource}"
classpath="../${cs.jar}"/>
<!-- Deletes the existing build, docs and dist directory-->
<target name="clean">
<delete>
<fileset dir="." includes="**/*.class"/>
</delete>
<delete dir="${docs.dir}" />
<delete dir="${dist.dir}" />
</target>
<!-- Creates the build, docs and dist directory-->
<target name="makedir">
<mkdir dir="${docs.dir}" />
<mkdir dir="${dist.dir}" />
</target>
<!-- Compiles the java code (including the usage of library for JUnit -->
<target name="compile" depends="clean, makedir,gformat,checkstyle">
<javac includeantruntime="false" srcdir="${src.dir}" destdir="${build.dir}">
<compilerarg value="-Xlint:-options"/>
</javac>
</target>
<!-- Creates Javadoc -->
<target name="docs" depends="compile">
<javadoc packagenames="${packages}" additionalparam="-Xdoclint:none"
sourcepath="${src.dir}"
destdir="${docs.dir}">
<!-- Define which files / directory should get included, we include all -->
<fileset dir="${src.dir}">
<include name="*.java" />
</fileset>
</javadoc>
</target>
<target name="manifest">
<tstamp/>
<manifest file="manifest.mf">
<attribute name="Built-By" value="${user.name}"/>
<section name="common">
<attribute name="Specification-Title" value="${ant.project.name}"/>
<attribute name="Specification-Version" value="${version}"/>
<attribute name="Specification-Vendor" value=""/>
<attribute name="Implementation-Title" value=""/>
<attribute name="Implementation-Version" value="${build} ${TODAY}"/>
<attribute name="Implementation-Vendor" value=""/>
</section>
<attribute name="Main-Class" value="${main.class}" />
</manifest>
</target>
<!--Creates the deployable jar file -->
<target name="jar" depends="compile,manifest">
<jar destfile="${dist.dir}\${ant.project.name}.jar" basedir="${build.dir}" includes="**/*.class"
manifest="manifest.mf">
</jar>
</target>
<target name="run" >
<description>Run target</description>
<java classname="${main.class}">
<classpath>
<pathelement location="${dist.dir}\${ant.project.name}.jar"/>
<pathelement path="${java.class.path}"/>
</classpath>
</java>
</target>
<target name="gformat">
<exec executable="find" dir="${basedir}"
failonerror="true" outputproperty="sources">
<arg line=" . -type f -name '*.java'"/>
</exec>
<echo message="About to format ...: ${sources}"/>
<java classname="${gformat.main.class}">
<arg line=" -i ${sources}"/>
<classpath>
<pathelement location="../${gformat.jar}"/>
<pathelement path="${java.class.path}"/>
</classpath>
</java>
</target>
<target name="checkstyle">
<first id="checkstylefile">
<fileset dir=".." includes="${cs.config}"/>
</first>
<checkstyle config="${toString:checkstylefile}"
classpath="../${cs.jar}"
failOnViolation="false" properties="${cs.properties}">
<fileset dir="${src.dir}" includes="**/*.java"/>
<formatter type="plain"/>
<formatter type="plain" toFile="${cs.output}"/>
</checkstyle>
</target>
<target name="main" depends="compile, jar, docs">
<description>Main target</description>
</target>
</project>
respectively.
My other projects on the repository have similar configurations.
They work as expected.
Am I missing something obvious?
I did miss something obvious. An extra 't' in the property packages. Evidently, I'm going to need two sets of eyes for this or a fresh set, a few hours later!
NOW, how do I close this?
I think the problem is in following part:
<fileset dir="${src.dir}">
<include name="*.java" />
</fileset>
In Ant "*.java" means all files with names matching *.java. This does not search in subdirectories.
To include all subdirectories you must specify:
<fileset dir="${src.dir}">
<include name="**/*.java" />
</fileset>
But since you already specified the sourcePath attribute I'm wondering if you can't just remove the fileset element as ant will add **/*.java by default.
I am trying to build jar for my project using jdk 1.8.0_40 and ant version 1.9.0, jar is getting build but while converting this jar to .exe, it is not able to find main class as I have correctly mentioned my main class.I am using eclipse Mar Version: Mars.2 Release (4.5.2).
Earlier I was using jdk 1.7.0_79 version and ant 1.8.4 and everything was working fine.
I am facing issue while upgrading from jdk 1.7.0_79 to jdk 1.8.0_40.
Below is my ant xml which are using to build my jar.Let me know if any configuration is required for java 1.8 to build proper jar.
<property name="jar.name" value="SAFAL.jar" />
<property name="source.root" value="src" />
<property name="class.root" value="bin" />
<property name="lib.dir" value="lib" />
<property name="jar.dir" value="C:\D\SAFAL-Exe" />
<property name="Main-Class" value="com.sungard.ktt.main.SAFALEval" />
<property name="conf.pkj" value="com/sungard/ktt/business/configurations" />
<property name="img.pkj" value="com/sungard/ktt/business/images" />
<path id="project.class.path">
<pathelement location="${class.root}" />
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
</path>
<target name="clean" description="cleans up build structures">
<delete dir="${class.root}" />
<delete file="${jar.dir}/${jar.name}" />
</target>
<target name="prepare" description="sets up build structures">
<mkdir dir="${class.root}" />
</target>
<target name="compile" depends="prepare" description="Compiles all java classes">
<javac srcdir="${source.root}" destdir="${class.root}" debug="on" optimize="off" deprecation="on" source="1.8" target="1.8" includeantruntime = "false">
<classpath refid="project.class.path" />
</javac>
<mkdir dir="${class.root}/${conf.pkj}" />
<mkdir dir="${class.root}/${img.pkj}" />
<copy todir="${class.root}/${conf.pkj}">
<fileset dir="${source.root}/${conf.pkj}" />
</copy>
<copy todir="${class.root}/${img.pkj}">
<fileset dir="${source.root}/${img.pkj}" />
</copy>
</target>
<target name="jar" depends="compile">
<delete file="${jar.dir}/${jar.name}" quiet="true" failonerror="false" />
<jar destfile="${jar.dir}/${jar.name}">
<fileset dir="${class.root}" includes="**/*.*" />
<fileset dir="${source.root}" includes="**/api/*.java,**/api/vo/*.java"/>
<zipgroupfileset dir="${lib.dir}" />
<manifest>
<attribute name="Main-Class" value="${Main-Class}" />
<attribute name="Class-Path" value="." />
</manifest>
</jar>
</target>
<target name="run">
<java fork="true" classname="${Main-Class}">
<classpath>
<path location="./${jar.name}" />
</classpath>
</java>
</target>
In your java task you are using ./${jar.name} as the location of your jar - this is relying on the current directory being set correctly. All the rest of your code uses ${jar.dir}/${jar.name} as the path for the jar, so change the java task to do the same:
<target name="run">
<java fork="true" classname="${Main-Class}">
<classpath>
<path location="${jar.dir}/${jar.name}" />
</classpath>
</java>
</target>
I am trying to build a jar file and getting error Build Failed.
Problem creating jar: archive contains more than 65535 entries. (and the archive is probably corrupt but I could not delete it)
I am using Eclipse Neon Release 1 with JDK 1.8.0_101 and Ant version in eclipse is 1.9.6.
below is my ant build file :-
<property name="jar.name" value="ABC.jar" />
<property name="source.root" value="src" />
<property name="class.root" value="bin" />
<property name="lib.dir" value="lib" />
<property name="jar.dir" value="C:\D\ABC-Exe" />
<property name="Main-Class" value="com.abc.xxx.main.ABCEval" />
<property name="conf.pkj" value="com/abc/xxx/business/configurations" />
<property name="img.pkj" value="com/abc/xxx/business/images" />
<path id="project.class.path">
<pathelement location="${class.root}" />
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
</path>
<target name="clean" description="cleans up build structures">
<delete dir="${class.root}" />
<delete file="${jar.dir}/${jar.name}" />
</target>
<target name="prepare" description="sets up build structures">
<mkdir dir="${class.root}" />
</target>
<target name="compile" depends="prepare" description="Compiles all java classes">
<javac srcdir="${source.root}" destdir="${class.root}" debug="on" optimize="off" deprecation="on" source="1.8" target="1.8" includeantruntime = "false">
<classpath refid="project.class.path" />
</javac>
<mkdir dir="${class.root}/${conf.pkj}" />
<mkdir dir="${class.root}/${imwg.pkj}" />
<copy todir="${class.root}/${conf.pkj}">
<fileset dir="${source.root}/${conf.pkj}" />
</copy>
<copy todir="${class.root}/${img.pkj}">
<fileset dir="${source.root}/${img.pkj}" />
</copy>
</target>
<target name="jar" depends="compile">
<delete file="${jar.dir}/${jar.name}" quiet="true" failonerror="false" />
<jar destfile="${jar.dir}/${jar.name}">
<fileset dir="${class.root}" includes="**/*.*" />
<fileset dir="${source.root}" includes="**/api/*.java,**/api/vo/*.java"/>
<zipgroupfileset dir="${lib.dir}" />
<manifest>
<attribute name="Main-Class" value="${Main-Class}" />
<attribute name="Class-Path" value="." />
</manifest>
</jar>
</target>
<target name="run">
<java fork="true" classname="${Main-Class}">
<classpath>
<path location="./${jar.name}" />
</classpath>
</java>
</target>
Specify the zip64Mode argument on your jar task to say that you need to use the large 'zip64' format:
<jar destfile="${jar.dir}/${jar.name}" zip64Mode="always">
I am trying to build a project using Apache ANT ( all packages installed like SWT, Eclipse Indigo on Windows Xp SP3). All file are available in the corresponding directory
F:\Work_Arun\Indic\trunk\indic-keyboards\build-win32-x86.xml:47: Execute failed: java.io.IOException: Cannot run program "Cl" (in directory "F:\Work_Arun\Indic\trunk\indic-keyboards\src\org\iisc\mile\indickeyboards\windows"): CreateProcess error=2, The system cannot find the file specified
Build.XML
<?xml version="1.0"?>
<project name="indic-keyboards-win32-x86" default="build">
<description>indic-keyboards - A Multilingual Indic Keyboard Interface for Indic Scripts</description>
<property name="debug" value="false" />
<property name="verbose" value="false" />
<property name="main.class" value="org.iisc.mile.indickeyboards.IndicKeyboards" />
<property name="swt" value="swt.jar" />
<fileset id="ImagesIcons" dir="./resources">
<patternset includes="*.ico,*.png,*.gif,*.jpg,*.jpeg" />
</fileset>
<fileset id="otherfiles" dir=".">
<patternset includes="*.txt,*.conf" />
</fileset>
<fileset id="swtorg" dir="./swt">
<patternset includes="**/org/**" />
</fileset>
<fileset id="swtdll" dir="./swt">
<patternset>
<include name="swt*.dll" />
<include name="version.txt" />
</patternset>
</fileset>
<fileset id="ourdll" dir=".">
<patternset includes="*.dll" />
</fileset>
<target name="init" description="Initialization by creating the directory structure">
<mkdir dir="bin" />
</target>
<target name="header" depends="compile" description="Generates the platform specific header files for building libraries">
<javah destdir="./src/org/iisc/mile/indickeyboards/windows" classpath="./bin">
<class name="org.iisc.mile.indickeyboards.windows.PollThread" />
<class name="org.iisc.mile.indickeyboards.windows.OutputCharToActiveWindow" />
</javah>
</target>
<target name="build" depends="header" description="Creates the windows libraries (.dll files)">
<property environment="env" />
<echo>Using JDK present at ${env.JAVA_HOME} ; Architecture : ${env.PROCESSOR_ARCHITECTURE}</echo>
<exec dir="./src/org/iisc/mile/indickeyboards/windows" executable="Cl">
<arg line="-I'${env.JAVA_HOME}'\include -I'${env.JAVA_HOME}'\include\win32 -LD /Feindic-keyboards-sysHook.dll syshook.cpp /link user32.lib" />
</exec>
<exec dir="./src/org/iisc/mile/indickeyboards/windows" executable="cl">
<arg line="-I'${env.JAVA_HOME}'\include -I'${env.JAVA_HOME}'\include\win32 -LD /Feindic-keyboards-opChars.dll opChars.cpp /link user32.lib" />
</exec>
<move todir=".">
<fileset dir="./src/org/iisc/mile/indickeyboards/windows">
<include name="*.dll" />
</fileset>
</move>
<delete>
<fileset dir="./src/org/iisc/mile/indickeyboards/windows" includes="*.h" />
<fileset dir="./src/org/iisc/mile/indickeyboards/windows" includes="*.obj" />
<fileset dir="./src/org/iisc/mile/indickeyboards/windows" includes="*.exp" />
<fileset dir="./src/org/iisc/mile/indickeyboards/windows" includes="*.lib" />
<fileset dir="./src/org/iisc/mile/indickeyboards/windows">
<include name="lib*" />
</fileset>
</delete>
</target>
<target name="compile" depends="init" description="Compiles the java source code.">
<echo>Compiling ${ant.project.name}</echo>
<javac srcdir="src" destdir="bin" classpath="${swt}" debug="${debug}" verbose="${verbose}" />
</target>
<target name="run" depends="build" description="Executes the project">
<echo>Using Java ${ant.java.version} present at ${java.home}</echo>
<java classpath="${swt}:./bin" classname="org.iisc.mile.indickeyboards.IndicKeyboards" fork="true" />
</target>
<target name="jar" depends="build" description="Packages into an executable JAR">
<mkdir dir="dist" />
<mkdir dir="swt" />
<unjar src="${swt}" dest="./swt" />
<manifest file="MANIFEST.MF">
<attribute name="Class-Path" value="." />
<attribute name="Main-Class" value="${main.class}" />
</manifest>
<jar destfile="./dist/${ant.project.name}.jar" basedir="bin" duplicate="preserve" manifest="./MANIFEST.MF">
<fileset refid="swtdll" />
<fileset refid="swtorg" />
</jar>
<delete dir="META-INF" />
<delete file="./MANIFEST.MF" />
<delete dir="swt" />
<copy todir="./dist">
<fileset refid="ourdll" />
</copy>
<mkdir dir="./dist/kblayouts" />
<copy todir="./dist/kblayouts">
<fileset dir="./kblayouts" />
</copy>
<mkdir dir="./dist/resources" />
<copy todir="./dist/resources">
<fileset dir="./resources" />
</copy>
<mkdir dir="./dist/docs" />
<copy todir="./dist/docs">
<fileset dir="./docs" />
</copy>
<copy todir="./dist">
<fileset refid="otherfiles" />
</copy>
<delete dir="./bin" />
</target>
<target name="javadoc" depends="init" description="Generates javadoc of the source">
<mkdir dir="./javadoc" />
<javadoc destdir="./javadoc" sourcepath="./src" packagenames="org.*" Private="true" />
<delete dir="./bin" />
</target>
<target name="clean" description="Clean up after compile/build.">
<delete dir="./bin" />
<delete dir="./javadoc" />
<delete dir="./dist" />
<delete>
<fileset dir="./" includes="*.dll" />
</delete>
</target>
</project>
What is cause of the error ?
I've written/copied a simple ant example and am trying to deploy a Java progamm with it. My build file bsp0201.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<project name="bsp0201" default="main" basedir=".">
<property name="dir.src" value="./source" />
<property name="dir.build" value="./classes" />
<property name="dir.lib" value="./lib" />
<path id="cp">
<pathelement path="${classpath}" />
<pathelement location="${dir.build}" />
</path>
<target name="main" depends="prepare, compile, run" />
<target name="prepare">
<mkdir dir="${dir.build}" />
<delete>
<fileset dir="${dir.build}" includes="**/*" />
</delete>
</target>
<target name="compile">
<javac classpathref="cp" destdir="${dir.build}" srcdir="${dir.src}" includes="**/*.java" includeantruntime="false" />
<mkdir dir="${dir.lib}" />
<jar destfile="${dir.lib}/ae.jar">
<fileset dir="${dir.build}" includes="**/*.class" />
</jar>
</target>
<target name="run" if="test">
<java classname="main.GeoAnalyzerMain" classpath="${dir.lib}/ae.jar">
<arg line="${test}" />
</java>
</target>
</project>
My ant commando & the result output:
# ant -f bsp0201.xml run -Dtest=Echo
Buildfile: /var/www/sandbox/ant/bsp0201/bsp0201.xml
run:
BUILD SUCCESSFUL
Total time: 1 second
Ant generates the folders, the class files and a JAR file ae.jar. But the size of this JAR file is only 19.1 KB (instead of 297 KB of the JAR file, when I generate it with eclipse) and I cannot execute it. What do I do wrong?
Thx
Yes, was a good idea to compare the JARs. :) Here you can see the comparsion result:
The folder /img and the /.classpath are missing in the Ant-JAR. Why has Ant not included them? How can I make Ant to include the missing files/folders?
I edited the build XML:
<?xml version="1.0" encoding="UTF-8" ?>
<project name="bsp0201" default="main" basedir=".">
<property name="dir.src" value="./source" />
<property name="dir.build" value="./classes" />
<property name="dir.lib" value="./lib" />
<path id="cp">
<pathelement path="${classpath}" />
<pathelement location="${dir.build}" />
</path>
<target name="main" depends="prepare, compile, run" />
<target name="prepare">
<mkdir dir="${dir.build}" />
<delete>
<fileset dir="${dir.build}" includes="**/*" />
</delete>
</target>
<target name="compile">
<javac classpathref="cp" destdir="${dir.build}" srcdir="${dir.src}" includes="**/*.java" includeantruntime="false" />
<mkdir dir="${dir.lib}" />
<jar destfile="${dir.lib}/AntExample.jar">
<fileset dir="${dir.build}" includes="**/*.class" />
<fileset dir=".">
<include name="img/*.*" />
</fileset>
</jar>
</target>
<target name="run" if="test">
<java classname="main.GeoAnalyzerMain" classpath="${dir.lib}/AntExample.jar">
<arg line="${test}" />
</java>
</target>
</project>
Now the image folder is copied into the result archive. But the JAR still cannot be executed.
EDIT:
It works!
<?xml version="1.0" encoding="UTF-8" ?>
<project name="bsp0201" default="main" basedir=".">
<property name="dir.src" value="./source" />
<property name="dir.build" value="./classes" />
<property name="dir.lib" value="./lib" />
<path id="cp">
<pathelement path="${classpath}" />
<pathelement location="${dir.build}" />
</path>
<target name="main" depends="prepare, compile, run" />
<target name="prepare">
<mkdir dir="${dir.build}" />
<delete>
<fileset dir="${dir.build}" includes="**/*" />
</delete>
</target>
<target name="compile">
<javac classpathref="cp" destdir="${dir.build}" srcdir="${dir.src}" includes="**/*.java" includeantruntime="false" />
<mkdir dir="${dir.lib}" />
<jar destfile="${dir.lib}/AntExample.jar">
<fileset dir="${dir.build}" includes="**/*.class" />
<fileset dir=".">
<include name="img/*.*" />
</fileset>
<manifest>
<attribute name="Main-Class" value="main.GeoAnalyzerMain" />
</manifest>
</jar>
</target>
<target name="run" if="test">
<java classname="main.GeoAnalyzerMain" classpath="${dir.lib}/AntExample.jar">
<arg line="${test}" />
</java>
</target>
</project>