2010-03-02 16 views
8

Bir deneme olarak, ürünlerimizi JDK yerine Java 6'nın çalışma zamanı sürümünde Eclipse java derleyicisi (eclipse.org'dan indirilen ecj-3.5.jar) kullanarak oluşturmak istiyoruz ve anladığım kadarıyla, bu kavanozu karınca sınıf yoluna eklemek ve build.compiler özelliğini bağdaştırıcıyı işaret edecek şekilde ayarlamak önemlidir. Benim build.xmlEclipse derleyicisini tamamen _within_ build.xml ile belirtme

<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter" /> 

dahil ve JRE ile karınca çağırmak suretiyle

, içeri sınıf için ecj-3.5.jar ekleyerek adaptör bulunamaz o beklenen hata alıyorum ve Eclipse paneli Kodumu beklediğim gibi derleyebilirim. Modern karıncalarla birlikte komut satırından "-lib foo.jar" ile aynı işlevsellik gösterebileceğine inanıyorum.

Şimdi, build.xml içinde içinde belirtmek istediğim ecj-3.5.jar, sınıf yolumda yukarıdakiyle aynı şeyi tatmin etmesini istiyorum. Bunu ant görevleriyle yapabiliriz, bu yüzden mümkün olduğuna inanıyorum.

Soru şu: Derlemeden derleyicisini bulmak için javac tarafından kullanılan sınıf yoluna nasıl ekleyebilirim? build.xml içinden?


O yaklaşan ant4eclipse 1.0 Elimizdeki sorunu çözmek gerekir (0,5 ila) Buna yükselterek böylece, (ı için kullanmak istediğini olan) Eclipse derleyici içerir anlaşılmaktadır.


2010-09-24: Ant4Eclipse kullanıma sunulacaktır endikasyonu bulunmayan M4 hala serbest.


2011-12-01: Artık karıncadan maven'e göç ettik. Build.xml komutları karmaşıklık duvarına çarptı ve yeni bir yaklaşım gerekiyordu. Ne yapmak istediğini seçmek isteyen herkes - önemsiz projeler dışında ant4eclipse yoluna gitmeyin.


2012-11-30: Bir yıl sonra, maven deneyimi hala çok iyi. Zihniyette çok fazla tuhaflık ve değişim var, ama çoğu bağlamda anlam ifade ediyor. Maven, derleyici seviyesini bireysel projelerde kolayca belirleyebilir. Javac yerine ecj'i kullanmayı düşünüyoruz (birkaç nedenden dolayı) ama çoğu amaç için javac güzel çalışıyor.

cevap

11

Javac kullanırken, bir componentdef referansı belirtmenin bir yolu belirtilir. Eğer varsa veya javactır için derleyici nitelik ve ardından javactır için compilerclasspath belirtmek olarak

<componentdef name="ecj" 
       classname="org.eclipse.jdt.core.JDTCompilerAdapter" 
       classpath="ecj-3.7.1.jar" /> 

<javac ....> 
    <ecj/> 
</javac> 

Başka bir seçenek build.compiler ayarlamaktır. Bu derleyici bağdaştırıcınızı yüklemek için sınıf yolunu tutmak için yapı gibi normal bir yoldur.

<javac compiler="org.eclipse.jdt.core.JDTCompilerAdapter" ....> 
    <compilerclasspath> 
    ... 
    </compilerclasspath> 
</javac> 

Daha fazla detay için Ant kılavuzda javac task belgelere bakın. Bu iki çözümün her ikisinin de sadece Ant 1.8'den itibaren çalıştığını unutmayın.

+0

Eclipse 3.5 (muhtemelen 1.7) ile gönderilen karınca ile "Sorun: görev oluşturulamadı veya componentdef yazın" alıyorum. Başka bir hata mesajı, 1.8 ile ilgili bir sınıf yoludur, ama Eclipse'in içinden çalışan bir çözümü gerçekten takdir ediyorum. –

+0

Ant 1.8 için başka bir seçenek daha ekledim, ancak bunu 1.7 – Mark

1

Okuma Running Ant via Java. Bir sınıf yolunu doğru şekilde ayarlayacak ve sonuçta ortaya çıkan sınıf yoluna jar dosyanızı ekleyebilecek basit bir sarıcı yazabilirsiniz.İşte

Sadece kesme ve sınıf için ilgilenen kütüphaneye eklenmesiyle yukarıdaki bağlantıdan örnek yapıştırarak ediyorum:

<java 
     classname="org.apache.tools.ant.launch.Launcher" 
     fork="true" 
     failonerror="true" 
     dir="${sub.builddir}" 
     timeout="4000000" 
     taskname="startAnt" 
> 
    <classpath> 
     <pathelement location="${ant.home}/lib/ant-launcher.jar"/> 
     <pathelement location="/path/to/ecj-3.5.jar"/> 
    </classpath> 
    <arg value="-buildfile"/> 
    <arg file="${sub.buildfile}"/> 
    <arg value="-Dthis=this"/> 
    <arg value="-Dthat=that"/> 
    <arg value="-Dbasedir=${sub.builddir}"/> 
    <arg value="-Dthe.other=the.other"/> 
    <arg value="${sub.target}"/> 
</java> 

ben bile aynı yapı dosyası yeniden kullanabilirsiniz düşünüyorum sadece bir giriş noktası olarak farklı bir hedef verin.

+0

ile nasıl yapabildiğinizi görmüyorsunuz Yeniden gözden geçiren karınca ile gözden geçirilmiş bir sınıf yolunu öneriyorsunuz. Yeniden başlatılan adımdan gerçekten kaçınırdım. –

İlgili konular