我需要使用Ant构建脚本来解压到Tomcat / webapps目录war文件。 战争文件的名称是不固定的。 我怎样才能将它解压缩目录中,其名称是一样的战争文件名。 我知道如何解压缩文件,但问题是它解压缩在指定的目标目录中的内容。 如果我不知道是什么的目录名?
构建之前:
tomcat/webapps/
myApp-0.1.war
编译后:
tomcat/webapps
myApp-0.1/
myApp-0.1.war
我需要使用Ant构建脚本来解压到Tomcat / webapps目录war文件。 战争文件的名称是不固定的。 我怎样才能将它解压缩目录中,其名称是一样的战争文件名。 我知道如何解压缩文件,但问题是它解压缩在指定的目标目录中的内容。 如果我不知道是什么的目录名?
构建之前:
tomcat/webapps/
myApp-0.1.war
编译后:
tomcat/webapps
myApp-0.1/
myApp-0.1.war
尼斯工作布卢特克 。 您的解决方案也可以表述如下:
<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>
因此,了解这里的一些Ant任务后就是我想出了:
<!-- 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>
让我知道是否有更好的方式来做到这一点。 我还发现一个解决方案上的计算器使用蚂蚁的contrib但这并不是我所期待的。