Saat menggunakan ANT, bagaimana saya bisa mendefinisikan tugas hanya jika saya memiliki versi Java tertentu?

Saya mempunyai masalah bahwa langkah tertentu di Ant hanya dapat dijalankan ketika kita telah menginstal Java 1.5 di komputer build. Penggunaan definisi tugas menggunakan file jar yang dikompilasi menggunakan 1.5, jadi menjalankan dengan mesin virtual 1.4 akan memunculkan pengecualian InkompatibelClassVersion.

Sementara itu saya harus menemukan solusi agar tugas ini berfungsi untuk proyek khusus ini yang membutuhkan 1.4, tetapi sebuah pertanyaan muncul di benak saya. Bagaimana saya bisa menghindari pendefinisian tugas ini dan menjalankan langkah opsional ini jika saya tidak memiliki versi Java tertentu?

Saya dapat menggunakan tag "jika" atau "kecuali" pada tag target, tetapi tag tersebut hanya memeriksa apakah suatu properti disetel atau tidak. Saya juga ingin memiliki solusi yang tidak memerlukan perpustakaan tambahan, tetapi saya tidak tahu apakah fungsionalitas bawaan dalam standar cukup untuk melakukan tugas seperti itu.


person Mario Ortegón    schedule 29.09.2008    source sumber


Jawaban (2)


Versi Java diekspos melalui properti ant.java.version. Gunakan kondisi untuk menyetel properti dan menjalankan tugas hanya jika itu benar.

<?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

Properti yang akan diperiksa di buildfile adalah ${ant.java.version}.

Anda dapat menggunakan elemen <condition> untuk membuat tugas bersyarat ketika properti sama dengan a nilai tertentu:

<condition property="legal-java">
  <matches pattern="1.[56].*" string="${ant.java.version}"/>
</condition>
person Lorenzo Boccaccia    schedule 29.09.2008
comment
Ahhh sayang sekali saya harus menggunakan Ant 1.6! Fungsionalitas regexp ini hanya tersedia sejak ant 1.7! - person Mario Ortegón; 29.09.2008