Reputation: 854
According to the training task, I need to create .jar
-file with ant
. There are no problems with the Assembly of ordinary classes that are in src
.
But I have in project present logger
, libraries
to him and .properties
file.
because of this, errors fly out:
[javac] error: package org.apache.logging.log4j does not exist
and
error: cannot find symbol
[javac] error: private static final Logger logger = LogManager.getLogger(Hello.class);
I have build.xml
<?xml version="1.0"?>
<project name="Runner" default="run">
<!-- define names of directories -->
<property name="src" location="src"/>
<property name="build" location="build"/>
<property name="classes" location="${build}/classes"/>
<!-- define all targets -->
<target name="compile">
<mkdir dir="${classes}"/>
<javac srcdir="${src}" destdir="${classes}" includeAntRuntime="false"/>
</target>
<target name="run" depends="compile">
<java classname="${ant.project.name}" classpath="${classes}"/>
</target>
<target name="clean">
<delete dir="${build}"/>
</target>
<target name="package" depends="compile">
<jar destfile="${build}/${ant.project.name}.jar" basedir="${classes}">
<manifest>
<attribute name="Main–Class" value="${ant.project.name}"/>
</manifest>
</jar>
</target>
</project>
and this stracture
How and where to gather library and property in Java file to jar-file was executable?
Upvotes: 2
Views: 2433
Reputation: 854
I figured it out.
<path id="classpath"> <fileset dir="${lib}"> <include name="**/*.jar"/> </fileset> </path> <target name="init" depends="clean" description="starts"> <tstamp/> </target> <target name="clean" depends="package-to-jar" description="clean up"> <delete dir="${classes}"/> <delete file="${external-lib}"/> </target> <target name="package-to-jar" depends="package-external-lib" description="packing all project into a jar-file"> <jar destfile="${jar}/${ant.project.name}.jar" basedir="${classes}"> <manifest> <attribute name="Main-Class" value="${main-class}"/> </manifest> <zipfileset src="${external-lib}"/> </jar> <delete dir="${classes}"/> <delete file="${external-lib}"/> </target> <target name="package-external-lib" depends="compile" description="packing external libraries into a jar-file"> <jar destfile="${external-lib}"> <zipgroupfileset dir="${lib}"> <include name="**/*.jar"/> </zipgroupfileset> </jar> </target> <target name="compile" description="compile the source"> <mkdir dir="${classes}"/> <javac srcdir="${src}" destdir="${classes}" classpathref="classpath"/> <copy todir="${classes}"> <fileset dir="${src}" excludes="**/*.java"/> </copy> </target>
Upvotes: 4
Reputation: 328
Firstly you need include required library folders to class path
<path id="class.path">
<fileset dir="lib">
<include name="**/*.jar" />
</fileset>
</path>
and add reference to javac task in compile target
<target name="compile">
<mkdir dir="${classes}"/>
<javac srcdir="${src}" destdir="${classes}" includeAntRuntime="false">
<classpath refid="class.path" />
</javac>
</target>
aftewards include all properties file to jar
<target name="package" depends="compile">
<jar destfile="${build}/${ant.project.name}.jar" basedir="${classes}">
<include name="*.properties"/>
<manifest>
<attribute name="Main–Class" value="${ant.project.name}"/>
</manifest>
</jar>
</target>
Upvotes: 1