สภาพแวดล้อม : ANT 1.9.4 โดยใช้ scriptdef javascript เพื่อดึงหมายเลขเวอร์ชันจากชื่อไฟล์
ในไดเร็กทอรีที่เลือก ให้ค้นหาชื่อไฟล์ที่มีนามสกุล .jar รับชื่อไฟล์ทั้งหมด วนซ้ำแต่ละชื่อไฟล์เพื่อดึงสตริงเฉพาะ และแยกหมายเลขเวอร์ชันจากสตริงนั้น ฉันใช้ scriptdef javascript เพื่อให้บรรลุเป้าหมายนี้ รหัสถูกคัดลอกด้านล่าง
รูปแบบชื่อไฟล์คือ "GeneralService_V1.2.jar" & "GeneralService_V10.6_SSL.jar"
นิพจน์ Regex ที่ใช้ในการดึงข้อมูล Vx.x คือ "\V\[0-9]+\.\[0-9]+\" ( นี่เป็นเพียงสำหรับ รูปแบบชื่อไฟล์ที่สอง)
ฉันได้รับข้อผิดพลาด - javax.script.ScriptException: sun.org.mozilla.javascript.EvaluatorException: missing ; ก่อนคำสั่ง (#11) ในบรรทัดที่ 11
มันล้มเหลวที่บรรทัดรูปแบบ ฉันใช้คำสั่ง Pattern ที่ถูกต้องหรือนิพจน์ regex ผิดหรือไม่
<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}"/>