Iffo
Iffo

Reputation: 353

How to create an executable jar with Ant

In Eclipse I'm using ant for create .jar files

I need to debug a jar in another project. How i can generate a jar which also contains source code for debug?

EDIT: i create the jar using:

<jar destfile="${my.lib}/${myProject}.jar" basedir="${eclipse.workspace}/${myProject}/bin">

Upvotes: 1

Views: 6626

Answers (2)

Yash
Yash

Reputation: 9568

Creating a runnable jar file using Apache Ant task zipgroupfileset

<manifest file = "MANIFEST.MF"> <!-- Manifest-Version: 1.0 -->
    <attribute name = "Main-Class"  value = "${RunnableMain-Class}"/>
    <attribute name = "Class-Path"  value = "."/>
</manifest>
<jar destfile="${exportDestination}/${jarFileName}.jar" basedir="${class-files}"
     manifest="MANIFEST.MF">
    <fileset dir="${class-files}" includes="**/*.class" />
    <zipgroupfileset dir="${buildPath-Libraries}" includes="**/*.jar" />
</jar>

Full length example:

<property name="exportDestination"       value="${basedir}"/>

<property name="ProjectName"             value="${basedir}/MyRunnableJAR"/>
<property name="jarFileName"             value="myRunnableJAR"/>
<property name="RunnableMain-Class"      value="org.openqa.grid.selenium.GridLauncher"/>

<property name="class-files"             value="${ProjectName}/bin" />
<property name="buildPath-Libraries"     value="${ProjectName}/lib"/>
<property name="source-dir"              value="${ProjectName}/src" />

<property name="Ant-Version"             value="Apache Ant 1.8.2"/>
<property name="Built-By"                value="Yashwanth.Merugu"/>

<path id="buildLibraries"> <!-- http://ant.apache.org/manual/using.html#path -->
    <fileset dir="${buildPath-Libraries}">
        <include name="*.jar"/>
    </fileset>
</path>
<!-- compile -->
<target name="compile" >
    <mkdir dir="${class-files}"/>

    <javac srcdir="${source-dir}" destdir="${class-files}" includeantruntime="false" encoding="iso-8859-1">
        <classpath refid="buildLibraries"/>
    </javac>
</target>
<!-- jar -->
<target name="jar" depends="compile">

    <manifest file = "MANIFEST.MF"> <!-- Manifest-Version: 1.0 -->
        <attribute name = "Built-By"    value = "${Built-By}"/>
        <attribute name = "Ant-Version" value = "${Ant-Version}"/>
        <attribute name = "Main-Class"  value = "${RunnableMain-Class}"/>
        <attribute name = "Class-Path"  value = "."/>
    </manifest>

    <jar destfile="${exportDestination}/${jarFileName}.jar" basedir="${class-files}" manifest="MANIFEST.MF">
        <fileset dir="${class-files}" includes="**/*.class" />
        <zipgroupfileset dir="${buildPath-Libraries}" includes="**/*.jar" />
    </jar>
</target>

From Eclipse to create Runnable JAR File

Upvotes: 1

sunbabaphu
sunbabaphu

Reputation: 1493

to include source files in the jar, this would suffice:

<jar destfile="${my.lib}/${myProject}.jar" basedir="${eclipse.workspace}/${myProject}" includes="bin/**,src/**"/>  

however, you've mwntioned create an executable jar in your question, for that, this should work:

<target name="abc">
    ...
     <manifest file = "MANIFEST.MF">
        <attribute name = "Main-Class" value = "yourClassName"/>
        <attribute name = "Class-Path" value = "."/>
     </manifest>
     <jar destfile="${my.lib}/${myProject}.jar" basedir="${eclipse.workspace}/${myProject}" includes="bin/**,src/**" manifest="MANIFEST.MF"/> 
</target>

Upvotes: 2

Related Questions