2014-09-16 3 views
0

J'utilise ant pour créer mon application Web. J'essaie d'inclure un fichier de propriétés dans le dossier WEB-INF à partir d'un dossier source. Je l'ai inclus dans le dossier war/WEB-APP/classes. Mais l'application ne le lit pas. Par conséquent, je veux l'inclure directement dans le dossier WEB-INF pour le lire dans l'application. J'ai essayé ce qui suit, mais rien ne semble fonctionner. mon build.xml ressemble à ceci:Comment inclure un fichier de propriétés dans le dossier de guerre WEB-INF

<target name="build-dev" description="Package GWT app to web archive and deploy to web server"> 
    <echo message="Package GWT app to web archive" /> 
    <copy toDir="${basedir}/war/WEB-INF/lib"> 
     <fileset dir="${basedir}/lib" includes="*.jar" /> 
     <fileset dir="${gwt.home}" includes="*.jar" /> 
    </copy> 
    <copy todir="${basedir}/war" file="${basedir}/src/etc/dev/GroupQuoteUI.properties" /> 
    <war basedir="${war.dir}" destfile="${deploy.dir}/${app.name}.war" webxml="${webinf.dir}/web.xml"> 
     <webinf dir="${webinf.dir}/"> 
     <include name="*." /> 

     <exclude name="**/web.xml" /> 
     </webinf> 

     <classes dir="${basedir}/src/etc/dev/" includes="*.properties" /> 
    </war> 
</target> 

j'ai essayé d'utiliser:

  1. "comprennent name =" $ {} war.dir /GroupQuoteUI.properties » dans "tag WEBINF" mais il a travaillé did'nt

  2. comprend également = "$ {} war.dir /GroupQuoteUI.properties" dans la balise

  3. également à l'intérieur de cette "WEBINF" dossier à nouveau:..

    "zipfileset dir =" $ {basedir}/guerre/» comprend = "GroupQuoteUI.properties" fullpath = "$ {} webinf.dir /GroupQuoteUI.properties"

mais cela donne une erreur lors de la construction indiquant "ne peut pas avoir src dir ensemble".

Alors que dois-je faire pour inclure ce fichier dans le répertoire WEB-INF de la guerre. Tous les autres répertoires et le fichier web.xml sont inclus.

+0

Pourriez-vous montrer le code qui se lit le fichier? – treeno

+0

Ce code lit le fichier GroupQuoteUI.properties. BufferedInputStream courant = new BufferedInputStream \t \t \t \t \t (new FileInputStream ("GroupQuoteUI.properties")); \t \t \t systemProperties.load (flux); – sonal

Répondre

0

Vous ne pouvez pas lire un fichier qui est emballé dans une guerre, ou un bocal en accédant avec

new FileInputStream() 

Au lieu de cela, vous pouvez effectuer les opérations suivantes:

this.getClass().getResourceAsStream(filename) 

cela chargera une ressource (votre properties-file) du classpath, il lira donc le fichier dans une archive de guerre. Il le fait en utilisant la même ClasseLoader qui a été utilisé pour charger la classe qui appartient à this.getClass()

Ici vous trouverez un exemple: How to really read text file from classpath in Java

+0

hey merci. cela a fonctionné mais le code que j'ai utilisé est: InputStream inputStream = this.getClass(). getClassLoader() .getResourceAsStream ("GroupQuoteUI.properties"); Il lit le fichier de propriétés placé directement dans le dossier war (pas nécessaire de le placer dans le dossier classes) – sonal

+0

Est-ce qu'il se comporte différemment si vous utilisez getClassLoader()? – treeno

Questions connexes