Aufsetzen des TemplatesEinführungImmer Wenn ich eine neue Technik im Bereich der Webapplikationen ausprobieren wollte hat es sich als nützlich erwiesen eine bestehende Vorlage kopieren zu können und dann darauf aufzubauen. Also habe ich mich dazu entschlossen dies hier zu dokumentieren und auch als zip file zum runterladen anzubieten. An tools setze ich Ant 1.6 oder neuer vorraus. Als webcontainer benutze ich Tomcat. Aufbau der VerzeichnisstrukturZuerst lege ich ein Verzeichnis 'webapp' an. Darin werde ich den source (und damit meine ich nicht nur Java Dateien) all meiner Webapplikationen ablegen. Darin lege ich ein Verzeichnis 'template' an. Dies soll die minimale Grundlage für alle zukünftigen Webapplikationen werden. Unter 'template' lege ich nun folgende Verzeichnisse an:
Ein paar Dateien anlegenIm Verzeichnis 'war' erzeugen wir mit einem beliebigen Texteditor eine Datei namens 'index.jsp' (falls jemand kein JSP verwenden möchte kann er stattdessen einfach 'index.html' benutzen). Als Inhalt nehmen wir Folgendes: <html> <body> <h1>Hello world</h1> </body> </html> Im Verzeichnis 'war/WEB-INF' erzeugen wir mit einem beliebigen Texteditor eine Datei namens 'web.xml'. Als Inhalt nehmen wir Folgendes: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'> <web-app> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> Diejenigen, die sich vorhin für 'index.html' entschieden haben, müssen den entsprechenden Verweis in 'web.xml' ebenfalls anpassen. Erstellen des Ant build scriptsIm Verzeichnis 'template' legen wir eine Datei namens 'build.xml' mit folgendem Inhalt an: <?xml version="1.0"?> <project name="webapp" basedir="." default="usage"> <property environment="env"/> <target name="init"> <property file="build.properties"/> <property name="src.dir" value="src"/> <property name="web.dir" value="war"/> <property name="build.dir" value="${web.dir}/WEB-INF/classes"/> <property name="name" value="#WEBAPP_NAME#"/> <echo message="tomcat.home: ${tomcat.home}"/> <path id="master-classpath"> <fileset dir="${web.dir}/WEB-INF/lib"> <include name="*.jar"/> </fileset> <!-- We need the servlet API classes: --> <!-- for Tomcat 4.1 use servlet.jar --> <!-- for Tomcat 5.0 use servlet-api.jar --> <!-- for Other app server - check the docs --> <fileset dir="${tomcat.home}/common/lib"> <include name="servlet*.jar"/> <include name="jsp*.jar"/> </fileset> <pathelement path="${build.dir}"/> </path> </target> <target name="usage" depends="init"> <echo message=""/> <echo message="${name} build file"/> <echo message="-----------------------------------"/> <echo message=""/> <echo message="Available targets are:"/> <echo message=""/> <echo message="build --> Build the application"/> <echo message="deploy --> Deploy application as directory"/> <echo message="deploywar --> Deploy application as a WAR file"/> <echo message="install --> Install application in Tomcat"/> <echo message="reload --> Reload application in Tomcat"/> <echo message="start --> Start Tomcat application"/> <echo message="stop --> Stop Tomcat application"/> <echo message="list --> List Tomcat applications"/> <echo message=""/> </target> <target name="build" description="Compile main source tree java files" depends="init"> <mkdir dir="${build.dir}"/> <javac destdir="${build.dir}" debug="true" deprecation="false" optimize="false" failonerror="true"> <src path="${src.dir}"/> <classpath refid="master-classpath"/> </javac> <copy todir="${build.dir}" preservelastmodified="true"> <fileset dir="${src.dir}"> <include name="**/*.vm"/> </fileset> </copy> </target> <target name="deploy" depends="build" description="Deploy application"> <copy todir="${tomcat.home}/webapps/${name}" preservelastmodified="true"> <fileset dir="${web.dir}"> <include name="**/*.*"/> </fileset> </copy> </target> <target name="deploywar" description="Deploy application as a WAR file" depends="build"> <war destfile="${name}.war" webxml="${web.dir}/WEB-INF/web.xml"> <fileset dir="${web.dir}"> <include name="**/*.*"/> </fileset> </war> <copy todir="${deploy.path}" preservelastmodified="true"> <fileset dir="."> <include name="*.war"/> </fileset> </copy> </target> <target name="clean" description="Clean output directories" depends="init"> <delete> <fileset dir="${build.dir}"> <include name="**/*.class"/> </fileset> </delete> </target> <target name="undeploy" description="Un-Deploy application" depends="init"> <delete> <fileset dir="${deploy.path}/${name}"> <include name="**/*.*"/> </fileset> </delete> </target> <target name="junit" description="Run JUnit Tests" depends="build"> <junit printsummary="on" fork="false" haltonfailure="false" failureproperty="tests.failed" showoutput="true"> <classpath refid="master-classpath"/> <formatter type="brief" usefile="false"/> <batchtest> <fileset dir="${build.dir}"> <include name="**/Test*.*"/> </fileset> </batchtest> </junit> <fail if="tests.failed"> *********************************************************** *********************************************************** **** One or more tests failed! Check the output ... **** *********************************************************** *********************************************************** </fail> </target> </project> Ausserdem legen wir im Verzeichnis 'template' noch eine Datei namens 'build.properties' mit folgendem Inhalt an: tomcat.home=${env.CATALINA_HOME} deploy.path=${tomcat.home}/webapps tomcat.manager.url=http://localhost:8080/manager tomcat.manager.username=admin tomcat.manager.password=tomcat |