Často se mi stává, že když začínám psát nějaký build skript, tak nevím, jak začít. Chce to vždycky nějaký exampl, od kterého se odrazit. Takový jsem si vytvořil sám – jednoduchý skript, který kompiluje vše z adresáře src/ a vytváří jar soubor v adresáři dist/ do kterého zapíše nějaký ten MANIFEST.MF.
<project name="forsuber" default="dist" basedir="."> <property name="mainclass" value="net.forsuber.FormSubmiterMain"/> <property name="version.num" value="1.00"/> <property name="src" location="src"/> <property name="build" location="build"/> <property name="dist" location="dist"/> <buildnumber file="build.num"/> <tstamp> <format property="TODAY" pattern="yyyy-MM-dd HH:mm:ss"/> </tstamp> <path id="classpath.runtime"> <fileset dir="lib"> <include name="**/*.jar"/> </fileset> </path> <path id="classpath.build"> <path refid="classpath.runtime"/> </path> <target name="init"> <mkdir dir="${build}"/> </target> <target name="compile" depends="init"> <javac srcdir="${src}" destdir="${build}"> <classpath> <path refid="classpath.build"/> </classpath> </javac> </target> <target name="dist" depends="compile"> <pathconvert property="classpath.runtime.property" pathsep=" "> <path refid="classpath.runtime"/> <flattenmapper/> </pathconvert> <mkdir dir="${dist}"/> <jar jarfile="${dist}/forsuber.jar" basedir="${build}"> <fileset dir="${build}" excludes="**/Test.class"/> <fileset dir="${src}"> <exclude name="**/*.java"/> </fileset> <manifest> <attribute name="Implementation-Version" value="${version.num}-b${build.number}"/> <attribute name="Built-By" value="${user.name}"/> <attribute name="Built-Date" value="${TODAY}"/> <attribute name="Main-Class" value="${mainclass}"/> <attribute name="Class-Path" value="${classpath.runtime.property}"/> </manifest> </jar> </target> <target name="clean"> <delete dir="${build}"/> <delete dir="${dist}"/> </target> </project>
O něco složitější je šablona, kterou jsem připravil. Kromě mírně rozšířeného build.xml obsahuje také adresářovou strukturu a nástroje JUnit a Lint4j včetně nadefinovaných Ant tasků.
Šablona pro typický Ant projekt
Berte to opravdu jako malou ukázku toho, jak by to šlo dělat. Je mnoho dalších způsobů, vyplývá to také z toho, že Ant je vlastně svům způsobem programovací jazyk – tím se liší od Mavenu.
Diskuze
A ještě si potřebuju poznačit, že název proměnné s adresářemi pro dynamické knihovny je LD_LIBRARY_PATH. Furt to zapomínám