Muszę rozpakować plik war w katalogu tomcat/webapps za pomocą skryptu ANT build. Nazwa pliku wojny nie jest ustalona. Jak mogę go rozpakować w katalogu, którego nazwa jest taka sama jak nazwa pliku wojennego. Wiem, jak rozpakować plik, ale problem polega na tym, że rozpakowuje zawartość w określonym katalogu docelowym. Co jeśli nie znam nazwy katalogu?
Przed kompilacją:
tomcat/webapps/
myApp-0.1.war
Po kompilacji:
tomcat/webapps
myApp-0.1/
myApp-0.1.war
2 odpowiedzi
Dobra robota bluetech. Twoje rozwiązanie może być również wyrażone w następujący sposób:
<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>
Więc po zapoznaniu się z niektórymi zadaniami Ant, oto, co wymyśliłem:
<!-- 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>
Daj mi znać, czy jest na to lepszy sposób. Znalazłem również rozwiązanie dotyczące stackoverflow przy użyciu ant-contrib, ale tego nie szukałem.
Podobne pytania
Powiązane pytania
Nowe pytania
ant
Apache Ant (dawniej Jakarta Ant) to deklaratywne narzędzie do budowania oparte na języku XML, stworzone pierwotnie dla projektów Java. Zapewnia bogaty zestaw standardowych zadań do wykonywania najbardziej typowych operacji kompilacji, takich jak kompilowanie źródła Java, budowanie archiwów i uruchamianie testów. Funkcjonalność Ant można rozszerzyć za pomocą niestandardowych zadań i makr.