Skip to content

Instantly share code, notes, and snippets.

@ozgun
Created February 19, 2014 09:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ozgun/9088856 to your computer and use it in GitHub Desktop.
Save ozgun/9088856 to your computer and use it in GitHub Desktop.
Japa Applet'i için ant build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="Smartcard Login Applet" default="sign">
<!-- MANIFEST.MF dosyasındaki Application-Name alanının değeri -->
<property name="app.name" value="Smartcard Login Applet" />
<!-- Name of the output .jar file -->
<property name="jar.name" value="yh-smartcard-login.jar" />
<!-- Main class -->
<property name="main.class" value="tr.com.yh.loginapplet.MainApplet" />
<!-- The base directory for all libraries (jar) files -->
<property name="lib.dir" value="lib" />
<!-- applet'in bulunduğu klasör -->
<property name="applet.dir" value="resources/applet" />
<!-- Kaynak kodlar -->
<property name="src.dir" value="src"/>
<!-- Derleme işlemi sonucu oluşan dosyaların koyulacağı base klasör -->
<property name="build.dir" value="build"/>
<!-- Derlenen dosyaların koyulacağı klasör -->
<property name="classes.dir" value="${build.dir}/classes"/>
<!-- Oluşturulacak jar'ın kopyalanacağı klasör -->
<property name="jar.dir" value="${applet.dir}"/>
<!-- <property name="jar.dir" value="${build.dir}/jar"/> -->
<!-- Oluşturalacak jar'ın paht'i -->
<property name="jar.path" value="${jar.dir}/${jar.name}"/>
<!-- İmzalama için kullanılacak keystore'un path'i -->
<property name="keystore.path" value="${applet.dir}/MyAppletSignerKeyStore.jks"/>
<!-- İmzalamada kullanılan keystore'un şifresi. -->
<property name="keystore.password" value="secret"/>
<!-- İmzalamda kullanılan keystore içindeki prive key'in şifresi. Eğer keystore şifresi ile aynı ise buna gerek kalmaz. -->
<property name="keystore.private_key_password" value="secret"/>
<property name="jdk.home.1.7" value="/opt/jdk1.7.0_51" />
<property name="jdk.bin.1.7" value="${jdk.home.1.7}/bin"/>
<property name="config.dir" value="config"/>
<property name="config_profiller.dir" value="${config.dir}/profiller"/>
<property name="lisans.dir" value="lisans"/>
<!-- Derleme esnasında kullanılacak kütüphanelerin path'lerini tanımlanması. Burda tanımlanan path'ler classpath'e eklenir -->
<path id="classpath">
<!-- fileset içindeki kütüphaneler alfabetik olarak sıralanıyor, o yüzden jfxrt.jar'ı bir sonraki fileset içine aldım. -->
<fileset dir="${jdk.home.1.7}">
<include name="jre/lib/resources.jar"/>
<include name="jre/lib/deploy.jar"/>
<include name="jre/lib/jfr.jar"/>
<include name="jre/lib/jsse.jar"/>
<include name="jre/lib/javaws.jar"/>
<include name="jre/lib/jce.jar"/>
<include name="jre/lib/plugin.jar"/>
<include name="jre/lib/charsets.jar"/>
<include name="jre/lib/rt.jar"/>
<include name="jre/lib/management-agent.jar"/>
<include name="jre/lib/ext/dnsns.jar"/>
<include name="jre/lib/ext/sunec.jar"/>
<include name="jre/lib/ext/sunjce_provider.jar"/>
<include name="jre/lib/ext/localedata.jar"/>
<include name="jre/lib/ext/sunpkcs11.jar"/>
<include name="jre/lib/ext/zipfs.jar"/>
</fileset>
<!-- Eğer jfxrt.jar'ı yukarıdaki fileset içine koyarsak, derleme esnasında jfxrt.jar kütüphanesi classpath'e eklenirken plugins.jar
kütüphanesinden önce eklendiği için plugins.jar kütüphanesinden kullanmak istediğimiz "netscape.javascript.JSObject" sınıfı,
jfxrt.jar kütüphanesinden yükleniyor bu da derleme esnasında hataya sebep oluyor. -->
<fileset dir="${jdk.home.1.7}">
<include name="jre/lib/jfxrt.jar"/>
</fileset>
<!-- "lib" klasöründeki kütüphaneler -->
<fileset dir="${lib.dir}" includes="**/*.jar"/>
</path>
<!--
<path id="jdk.classpath.1.7">
<fileset dir="${jdk.home.1.7}">
<include name="jre/lib/resources.jar"/>
<include name="jre/lib/deploy.jar"/>
<include name="jre/lib/jfr.jar"/>
<include name="jre/lib/jsse.jar"/>
<include name="jre/lib/javaws.jar"/>
<include name="jre/lib/jce.jar"/>
<include name="jre/lib/plugin.jar"/>
<include name="jre/lib/jfxrt.jar"/>
<include name="jre/lib/charsets.jar"/>
<include name="jre/lib/rt.jar"/>
<include name="jre/lib/management-agent.jar"/>
<include name="jre/lib/ext/dnsns.jar"/>
<include name="jre/lib/ext/sunec.jar"/>
<include name="jre/lib/ext/sunjce_provider.jar"/>
<include name="jre/lib/ext/localedata.jar"/>
<include name="jre/lib/ext/sunpkcs11.jar"/>
<include name="jre/lib/ext/zipfs.jar"/>
</fileset>
</path>
-->
<property name="project.jdk.home" value="${jdk.home.1.7}"/>
<property name="project.jdk.bin" value="${jdk.bin.1.7}"/>
<property name="project.jdk.classpath" value="{jdk.classpath.1.7}"/>
<!-- path kontrolünü yapan task -->
<!--
<target name="diagnostics">
<pathconvert property="classpathProp" refid="jdk.classpath.1.7"/>
<echo>Classpath is ${classpathProp}</echo>
</target>
-->
<target name="clean">
<delete dir="${build.dir}"/>
<delete file="${jar.path}"/>
</target>
<!-- Derleme işlemini yapan adım -->
<target name="compile" depends="clean">
<mkdir dir="${classes.dir}"/>
<javac includeantruntime="false" srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/>
</target>
<!-- jar oluşturan adım -->
<target name="jar" description="Create jar and MANIFEST.MF" depends="compile">
<!-- burda oluşturulan kütüphane listesi, MANIFEST.MF dosyasında Class-Path'in değeri oluyor -->
<pathconvert property="libs.project" pathsep=" ">
<mapper>
<chainedmapper>
<!-- remove absolute path -->
<flattenmapper />
<!-- add lib/ prefix -->
<globmapper from="*" to="lib/*" />
</chainedmapper>
</mapper>
<path>
<!-- lib.dir contains all jar files, in several subdirectories -->
<fileset dir="${lib.dir}">
<include name="**/*.jar" />
</fileset>
</path>
</pathconvert>
<!-- create the jar -->
<jar jarfile="${jar.path}" basedir="${classes.dir}">
<!-- config, config/profiller, lisans, lib klasörlerinin jar'a eklenmesi -->
<zipfileset dir="${config.dir}" includes="*.*" prefix="config"/>
<zipfileset dir="${config_profiller.dir}" includes="*.*" prefix="config/profiller"/>
<zipfileset dir="${lisans.dir}" includes="*.*" prefix="lisans"/>
<zipfileset dir="${lib.dir}" includes="*.*" prefix="lib"/>
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Main-Class" value="${main.class}" />
<attribute name="Application-Name" value="${app.name}" />
<!-- Finally, use the generated libs path -->
<attribute name="Class-Path" value="${libs.project}" />
</manifest>
</jar>
</target>
<!-- oluşturulan jar'ın jarsigner ile imzalanması -->
<target name="sign" depends="jar">
<!-- http://ant.apache.org/manual/Tasks/signjar.html -->
<!-- signjar task'ini kullanarak imzlamaya kalktığımda "certificate chain not found hatası veriyor, o yüzden bunu kullanamadım -->
<!--
<signjar jar="${jar.dir}/${jar.name}" alias="test" keystore="${keystore.path}" storepass="${keystore.password}" keypass="${keystore.private_key_password}" />
-->
<!-- jarsigner binary'sini kullanarak jar dosyasının imzalanması -->
<exec executable="${jdk.bin.1.7}/jarsigner">
<arg value="-keystore"/>
<arg value="${keystore.path}"/>
<arg value="-storepass"/>
<arg value="${keystore.password}"/>
<arg value="-keypass"/>
<arg value="${keystore.private_key_password}"/>
<arg value="${jar.dir}/${jar.name}"/>
<arg value="signFiles"/>
</exec>
</target>
</project>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment