Ant unzip/unwar with the same directory name as the file name

前端 未结 2 1767
旧时难觅i
旧时难觅i 2021-01-19 15:44

I need to unzip a war file in tomcat/webapps directory using ANT build script. The war file name is not fixed. How can I unzip it in a directory whose name is the same as th

相关标签:
2条回答
  • 2021-01-19 15:52

    Nice work bluetech. Your solution could also be expressed as follows:

    <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>
    
    0 讨论(0)
  • 2021-01-19 15:58

    So after learning about some Ant tasks here is what I came up with:

    <!-- 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>
    

    Let me know if there is a better way to do it. I also found a solution on stackoverflow using ant-contrib but that was not I was looking for.

    0 讨论(0)
提交回复
热议问题