2008-09-29 18 views
5

Antede belirli bir adımın, yalnızca yapı bilgisayarında Java 1.5 yüklü olduğunda çalıştırılabileceği konusunda sorun yaşıyorum. Görev tanımı, 1.5 kullanılarak derlenen bir jar dosyası kullanır; bu nedenle, 1.4 sanal makine ile çalışan bir IncompatibleClassVersion istisnası atar.ANT kullanırken, yalnızca belirli bir java sürümüne sahip olduğumda nasıl bir görevi tanımlayabilirim?

Ben 1.4 gerektirir bu özel proje için çalışan bu görevi olması bu arada bir çözüm bulmak zorunda, ama bir soru bana geldi. Belirli bir java sürümüm yoksa bu görevi tanımlamayı ve bu isteğe bağlı adımı yürütmekten nasıl kaçınamıyorum?

ben hedef etiketinde "eğer" ya da "sürece" etiketlerini kullanabilir, ancak bir özellik o sadece çek ayarlamak veya değilse. Ayrıca, fazladan kütüphane gerektirmeyen bir çözüme sahip olmak isterim, ama standarttaki yerleşik işlevsellik böyle bir görevi yerine getirmek için yeterli olup olmadığını bilmiyorum.

cevap

10

Java versiyonu ant.java.version özelliği ile maruz kalmaktadır. Bir özelliği ayarlamak ve görevi yalnızca doğruysa yürütmek için koşullu koşulunu kullanın.

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

Yapı dosyasında check in özelliği, ${ant.java.version} dur. onun Ahhh ben 1.6 Ant kullanmak zorunda olduğu bir utanç

<condition property="legal-java"> 
    <matches pattern="1.[56].*" string="${ant.java.version}"/> 
</condition> 
+0

: Bir özellik belirli bir değeri eşit olduğunda

Bir görev koşullu yapmak için <condition> eleman kullanabilirsiniz! Bu regexp işlevselliği sadece 1.7'den beri kullanılabilir! –

İlgili konular