Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich möchte eine Webanwendung schreiben, die in verschiedenen Servlet-Container laufen soll (zB Jetty oder Tomcat). Nun soll beim Kompilieren automatisch alles in ein vorher festgelegtes Verzeichnis (z.B. Jetty/webapps oder tomcat/webapps) kopiert werden.
1. Frage: Wo legt man dieses Verzeichnis am besten ab? Im build.xml selbst? In einer Umgebungsvariablen, die vom build.xml ausgelesen wird?
2. Frage: Wie sieht's aus mit externen Bibliotheken, die von der Applikation benötigt werden? Woher kriegt der Webserver mit, dass er sie einbinden muss bzw. wie kriegt er sie in seinen Classpath?
Was ist ein Filterfile? Normalerweise hatte ich vor, eine leere Variable servlet_container definieren und, wenn da nichts drin steht, automatisch Calatina_Home zuzuweisen.
Das Target "deploy" soll dann in servlet_container kopieren. Wäre das eine gute Idee? Wie gesagt: Ich weiss ja nicht, was eine Filterdatei ist.
Das zweite könnte dan so aussehen und liegt im jeweiligen Projekt:
Code:
# Please set catalina.home and properties.filter.file
# in your ${user.home}/build.properties
#
project=xxxxxx
#Use this for configuration of thge application
conf.dir=${basedir}/conf
src.dir=${basedir}/src
jsp.dir=${basedir}/jsp
css.dir=${basedir}/styles
images.dir=${basedir}/images
webinf.dir=${basedir}/WEB-INF
build.dir=${webinf.dir}/classes
web.lib.dir=${webinf.dir}/lib
lib.dir=${webinf.dir}/lib
compile.debug=true
compile.deprecation=true
compile.optimize=false
Diese beiden sind für das Projekt allgemein, werden einmal aufgesetzt und dann nicht mehr verändert.
In einem dritten Propertyfile kann dann jeder Entwickler seine persönichen Konfigurationen machen, oder verschiedene Filertfiles für verschiedene Deplyments etc ....
Dies hat den Vorteil, das man bei einer Änderung der Pfade nicht immer das build.xml anpassen muss, sondern jeder sein "eigenes" Propertiefile entsprechend anpassen kann.
Hier noch ein kleiner Auschnitt, wie man in der build.xml dann darauf zugreifen kann.
Code:
<ant dir="${common.project.basedir}/tools" antfile="build.xml" target="deploy"
inheritall="false" inheritrefs="false"/>
<echo message="Copying the just build jar file from the common project ..." />
<copy todir="${web.lib.dir}">
<fileset dir="${common.project.basedir}/tools/dist">
<patternset>
<include name="*.jar"/>
</patternset>
</fileset>
</copy>
Jetzt kommt vielleicht die Frage auf, warum Filterfile, wenn man nur properties da reinschreibt. Nunja ANT kann beim kopieren von ASCII dateien filtern.
Wenn jetzt in meinem local.filter.rechnername jetzt ein eintrag ist wie:
bitte.filter.mich=Ich bin eine Ersetzung
Wird bei jeder Datei die kopiert wird nachgeschaut, ob folgendes konstrukt auftaucht:
@bitte.filter.mich@
Ist dies der Fall, wirs dies duch "Ich bin eine Ersetzung" ersetzt. Damit lassen sich z.B: Datenbanktreiber für verschiedene Umgebungen einfach im Filterfile ablegen.
Ich hoffe jetzt ist das mit dem filterfile klar, und vielleicht hast du ja auch eine Vorstellung bekommen, wie man damit dein ursprüngliches Problem recht eleganz Lösen kann.