Lingkungan : ANT 1.9.4, menggunakan javascript scriptdef untuk mengambil nomor versi dari nama file.
Di direktori yang dipilih, temukan nama file dengan ekstensi .jar, dapatkan semua nama file, ulangi setiap nama file untuk mengambil string tertentu dan ekstrak nomor versi dari string tersebut. Saya menggunakan javascript scriptdef untuk mencapai ini. Kode disalin di bawah.
Format nama file adalah "GeneralService_V1.2.jar" & "GeneralService_V10.6_SSL.jar".
Ekspresi regex yang digunakan untuk mengambil Vx.x adalah "\V\[0-9]+\.\[0-9]+\" ( ini hanya untuk format nama file kedua).
Saya mendapatkan kesalahan - javax.script.ScriptException: sun.org.mozilla.javascript.EvaluatorException: missing ; sebelum pernyataan (#11) pada baris nomor 11
Gagal pada garis pola, apakah saya menggunakan pernyataan Pola yang benar atau ekspresi regex salah?
<scriptdef name="jarFiles" language="javascript">
<element name="fileset" type="fileset"/>
<![CDATA[
importClass(java.io.File);
importClass(org.apache.commons.io.FilenameUtils);
importClass(java.util.regex.Pattern);
importClass(java.lang.System);
filesets = elements.get("fileset");
for (i = 0; i < filesets.size(); ++i) {
fileset = filesets.get(i);
Pattern pat = Pattern.compile("_\\V\\[0-9]+\\.\\[0-9]+\\_");
Matcher matcher = pat.match(fileset);
if (matcher.find()) {
System.out.println(matcher.group(0)); //prints _Vx.x_
String currJarVersion = matcher.group(0);
} else {
System.out.println("Match not found");
}
]]>
</scriptdef>
<jarFiles>
<fileset id="jars" dir="${svn.jar.path}">
<include name="**/*.jar" />
</fileset>
</jarFiles>
<propertyregex property="currJarVersion"
regexp="_V"
replace=""
global="true" />
<echo message="${currJarVersion}"/>