เมื่อใช้ ANT ฉันจะกำหนดงานเฉพาะในกรณีที่ฉันมีเวอร์ชัน Java บางเวอร์ชันได้อย่างไร

ฉันมีปัญหาว่าขั้นตอนเฉพาะใน Ant สามารถดำเนินการได้เมื่อเราติดตั้ง Java 1.5 ในคอมพิวเตอร์บิลด์เท่านั้น คำจำกัดความของงานใช้ไฟล์ jar ที่ถูกคอมไพล์โดยใช้ 1.5 ดังนั้นการรันด้วยเครื่องเสมือน 1.4 จะทำให้เกิดข้อยกเว้น Inเข้ากันได้กับClassVersion

ในระหว่างนี้ฉันต้องหาวิธีแก้ไขเพื่อให้งานนี้ทำงานสำหรับโปรเจ็กต์เฉพาะที่ต้องใช้ 1.4 แต่มีคำถามเกิดขึ้น ฉันจะหลีกเลี่ยงการกำหนดงานนี้และดำเนินการขั้นตอนทางเลือกนี้ได้อย่างไร ถ้าฉันไม่มีเวอร์ชัน Java เฉพาะ

ฉันสามารถใช้แท็ก "if" หรือ "unless" บนแท็กเป้าหมายได้ แต่จะตรวจสอบว่ามีการตั้งค่าคุณสมบัติหรือไม่เท่านั้น ฉันยังต้องการโซลูชันที่ไม่ต้องใช้ไลบรารีเพิ่มเติม แต่ฉันไม่รู้ว่าฟังก์ชันการทำงานในตัวที่เป็นมาตรฐานจะเพียงพอสำหรับการทำงานดังกล่าวหรือไม่


person Mario Ortegón    schedule 29.09.2008    source แหล่งที่มา


คำตอบ (2)


เวอร์ชัน Java ถูกเปิดเผยผ่านคุณสมบัติ ant.java.version ใช้ เงื่อนไข เพื่อตั้งค่าคุณสมบัติและดำเนินงานเมื่อเป็นจริงเท่านั้น

<?xml version="1.0" encoding="UTF-8"?>

<project name="project" default="default">

    <target name="default" depends="javaCheck" if="isJava6">
        <echo message="Hello, World!" />
    </target>

    <target name="javaCheck">
        <echo message="ant.java.version=${ant.java.version}" />
        <condition property="isJava6">
            <equals arg1="${ant.java.version}" arg2="1.6" />
        </condition>
    </target>

</project>
person McDowell    schedule 29.09.2008

คุณสมบัติที่จะตรวจสอบใน buildfile คือ ${ant.java.version}

คุณสามารถใช้องค์ประกอบ <condition> เพื่อทำให้งานมีเงื่อนไขเมื่อคุณสมบัติเท่ากับ ค่าที่แน่นอน:

<condition property="legal-java">
  <matches pattern="1.[56].*" string="${ant.java.version}"/>
</condition>
person Lorenzo Boccaccia    schedule 29.09.2008
comment
อ่า น่าเสียดายที่ฉันต้องใช้ Ant 1.6! ฟังก์ชั่น regexp นี้ใช้ได้ตั้งแต่ ant 1.7 เท่านั้น! - person Mario Ortegón; 29.09.2008