2012-08-28 12 views
3

J'ai besoin de décompresser un fichier war dans le répertoire tomcat/webapps en utilisant le script de compilation ANT. Le nom du fichier war n'est pas corrigé. Comment puis-je décompresser dans un répertoire dont le nom est le même que le nom du fichier war. Je sais comment décompresser le fichier mais le problème est qu'il décompresse le contenu dans le répertoire de destination spécifié. Que faire si je ne connais pas le nom du répertoire?Ant unzip/unwar avec le même nom de répertoire que le nom de fichier

avant la construction:

tomcat/webapps/ 
    myApp-0.1.war 

après la construction:

tomcat/webapps 
    myApp-0.1/ 
    myApp-0.1.war 
+0

Le nom de répertoire ne doit-il pas être myApp-0.1 ou les noms de répertoire doivent-ils être en minuscules? – beny23

+0

@ beny23 merci. corrigée. – bluetech

Répondre

2

Beau travail bluetech. Votre solution peut également être exprimée comme suit:

<target name="unwar-test"> 
    <property name="webapps.dir" value="tomcat/webapps" /> 

    <fileset id="war.file.id" dir="${basedir}" 
     includes="${webapps.dir}/myApp-*.war" /> 
    <property name="war.file" refid="war.file.id" /> 

    <basename property="war.basename" file="${war.file}" suffix=".war" /> 
    <property name="unwar.dir" location="${webapps.dir}/${war.basename}" /> 
    <mkdir dir="${unwar.dir}" /> 
    <unwar dest="${unwar.dir}" src="${war.file}" /> 
</target> 
2

Alors après avoir appris certaines tâches Ant ici est ce que je suis venu avec:

<!-- Get the path of the war file. I know the file name pattern in this case --> 
<path id="warFilePath"> 
    <fileset dir="./tomcat/webapps/"> 
     <include name="myApp-*.war"/> 
    </fileset> 
</path> 

<property name="warFile" refid="warFilePath" /> 

<!-- Get file name without extension --> 
<basename property="warFilename" file="${warFile}" suffix=".war" /> 

<!-- Create directory with the same name as the war file name --> 
<mkdir dir="./tomcat/webapps/${warFilename}" /> 

<!-- unzip war file --> 
<unwar dest="./tomcat/webapps/${warFilename}"> 
    <fileset dir="./tomcat/webapps/"> 
     <include name="${warFilename}.war"/>  
    </fileset> 
</unwar> 

Laissez-moi savoir s'il y a une meilleure façon de le faire. J'ai aussi trouvé a solution sur stackoverflow en utilisant ant-contrib mais ce n'était pas ce que je cherchais.

Questions connexes