Ant Buildfile
Aus Infostudium Wiki
Inhaltsverzeichnis |
Beispiel-Datei für eine Java-Webapplication
Verzeichnisstruktur
/pfadzumproject/build.xml /pfadzumproject/src/ /pfadzumproject/etc/ /pfadzumproject/etc/project.conf /pfadzumproject/lib/ /pfadzumproject/web/ /pfadzumproject/web/META-INF/ /pfadzumproject/web/META-INF/MANIFEST.MF /pfadzumproject/web/WEB-INF/ /pfadzumproject/web/WEB-INF/web.xml
build.xml Datei
<project name="SPGS0506-WfMS" default="compile" basedir=".">
<property file="${basedir}/etc/project.conf" />
<property environment="env" />
<condition property="tomcat.home.local" value="${env.TOMCAT_HOME_LOCAL}">
<available file="${env.TOMCAT_HOME_LOCAL}" type="dir" />
</condition>
<condition property="tomcat.home.local" value="${env.TOMCAT_HOME}">
<available file="${env.TOMCAT_HOME}" type="dir" />
</condition>
<condition property="tomcat.home" value="${env.TOMCAT_HOME}">
<available file="${env.TOMCAT_HOME}" type="dir" />
</condition>
<condition property="tomcat.home" value="${env.CATALINA_HOME}">
<available file="${env.CATALINA_HOME}" type="dir" />
</condition>
<property name="project.input" location="${basedir}" />
<property name="project.output" location="${basedir}" />
<property name="project.build" location="${project.output}/build" />
<property name="project.output.classes" location="${project.build}/classes" />
<property name="project.output.jars" location="${project.build}/jars" />
<property name="project.output.warfiles" location="${project.build}/${app.name}" />
<property name="project.input.src" location="${project.input}/src" />
<property name="project.input.warfiles" location="${project.input}/web" />
<property name="project.input.webinf" location="${project.input.warfiles}/WEB-INF" />
<property name="project.input.externlibs" location="${project.output}/lib" />
<property name="project.inputlib.servlet" location="${tomcat.home}/common/lib/servlet-api.jar" />
<property name="excludes" value="**/CVS/*,**/.nbattrs,**/.project,**/.classpath" />
<property name="java.target.version" value="1.5" />
<property name="java.source.version" value="1.5" />
<path id="classpath">
<pathelement path="${java.class.path}" />
<pathelement location="${tomcat.home}/common/lib/servlet-api.jar" />
<fileset dir="lib">
<include name="**/*.jar" />
</fileset>
</path>
<target name="init">
<!-- überprüfen, ob externe Libraries vorhanden sind -->
<condition property="libsAvailable">
<and>
<available file="${project.inputlib.servlet}" />
</and>
</condition>
<tstamp>
<format property="timestamp" pattern="yyyy.MM.dd-HH.mm" />
</tstamp>
<property name="version.number" value="${env.USERNAME}_${timestamp}" />
<echo message="Building project ${version.number}" />
<echo message=" " />
<echo message="project input directory is: ${project.input}" />
<echo message="project output directory is: ${project.output}" />
<echo message="Java version detected: ${ant.java.version}" />
<echo message="Java home is: ${env.JAVA_HOME}" />
<echo message="Tomcat home is: ${tomcat.home}" />
</target>
<target name="checklibs" depends="init" unless="libsAvailable">
<fail>
Error: Some of the required libraries are not available.
To compile ${app.name}, you need the following libaries:
${project.inputlib.servlet}
</fail>
</target>
<target name="clean" description="Delete existing ouput directories">
<delete dir="${project.output.warfiles}" />
<delete dir="${project.build}" />
</target>
<target name="compile" depends="checklibs" description="Compile the project classes">
<mkdir dir="${project.output.classes}" />
<uptodate property="classesUpToDate" targetfile="${project.output.jars}/${app.name}.jar">
<srcfiles dir="${project.input.src}" includes="**/*.java" excludes="${build.excludes},${excludes}" />
<srcfiles dir="${project.input.src}" includes="**/*.properties,**/*.txt,**/*.xml,**/*.xsd,**/*.dtd,**/*.sql" excludes="${excludes}" />
</uptodate>
<javac srcdir="${project.input.src}" destdir="${project.output.classes}" excludes="${build.excludes}" classpath="${project.inputlib.servlet}" debug="on" optimize="on" deprecation="on" source="${java.source.version}" target="${java.target.version}">
<classpath refid="classpath" />
</javac>
<copy todir="${project.output.classes}">
<fileset dir="${project.input.src}" includes="**/*.properties,**/*.txt,**/*.xml,**/*.xsd,**/*.dtd,**/*.sql" excludes="${excludes}" />
</copy>
</target>
<target name="jar" depends="compile" description="Generate the project .jar files">
<mkdir dir="${project.output.jars}" />
<jar jarfile="${project.output.jars}/${app.name}.jar" basedir="${project.output.classes}">
<metainf dir="${project.input.warfiles}/WEB-INF" includes="project.tld" />
</jar>
</target>
<target name="war" depends="jar" description="Builds the project.war">
<war destfile="${project.build}/${app.name}.war" webxml="${project.input.warfiles}/WEB-INF/web.xml" manifest="${project.input.warfiles}/META-INF/MANIFEST.MF">
<lib dir="${project.output.jars}">
<include name="*.jar" />
</lib>
<fileset dir="${project.input.warfiles}">
<exclude name="WEB-INF/web.xml" />
<exclude name="build.xml,.*,${excludes}" />
</fileset>
</war>
</target>
<target name="tomcat.deploy" depends="war" description="Copy war file into tomcat webapp dir">
<copy todir="${tomcat.home.local}/webapps/">
<fileset dir="${project.build}/">
<include name="**/*.war" />
</fileset>
</copy>
</target>
</project>
project.conf
version.number=0.1 app.name=Uebung04
Hier werden die projektspezifischen Einstellungen vorgenommen. So kann die build.xml für mehrere Projekte verwendet werden.
Erläuterungen
Diese build.xml Datei verfügt über folgende Targets:
- init
- checklibs
- compile
- clean
- jar
- war
- tomcat.deploy
Zu Anfangs wird versucht, das Tomcat/Catalina Verzeichnis zu suchen. Daher sollte diese ant-Datei ohne zusätzliche Parameter beim Aufruf auskommen und sollte sowohl zuhause, als auch im CIP-Planschbecken laufen.
checklibs überprüft, ob alle nötigen Bibliotheken vorhanden sind.
compile kompiliert die java-Dateien nicht in ein classes- oder bin-Verzeichnis, sondern in ein build-Verzeichnis, welches im Projekt angelegt wird.
jar packt die class-Dateien in eine jar-Datei
war packt die jsp, jar und xml-Dateien in eine war-Datei.
tomcat.deploy kopiert die war-Datei ins Tomcat-webapps-Verzeichnis