karınca uyarısı: “'includeantruntime' ayarlanmadı”


397

Aşağıdaki uyarıyı alıyorum:

[javac] build.xml:9: warning: 'includeantruntime' was not set, 
defaulting to build.sysclasspath=last; set to false for repeatable builds

Ne anlama geliyor?

Yanıtlar:


388

Ant Çalışma Zamanı

Basitçe ayarlayın includeantruntime="false":

<javac includeantruntime="false" ...>...</javac>

Kullanmak varsa javac-Görev birden çok kez kullandığınız düşünebilirsiniz PreSetDefkendi tanımlamak için javacdaima setleri olduğunu -Görev includeantruntime="false".

ek detaylar

Gönderen http://www.coderanch.com/t/503097/tools/warning-includeantruntime-was-not-set :

Bunun nedeni Ant 1.8'de ortaya çıkan bir yanlış özelliktir. Sadece bu adın bir niteliğini javac görevine ekleyin, false değerine ayarlayın ve bunun olduğunu unutmayın.

Http://ant.apache.org/manual/Tasks/javac.html adresinden :

Ant çalışma zamanı kitaplıklarının sınıfyoluna dahil edilip edilmeyeceği; build.sysclasspath ayarlanmadığı sürece varsayılan olarak yes olur. Komut dosyasının davranışının çalıştığı ortama duyarlı olmaması için genellikle false olarak ayarlamak en iyisidir.


Apache Ant (TM) sürüm 1.8.2 20 Aralık 2010 tarihinde derlenmiştir
user496949

sınıf yolunda karınca çalışma zamanına ihtiyacınız varsa, bunu yes / true olarak, aksi halde no / false olarak ayarlayın. sanırım buna ihtiyacın yok.
Daniel Kutik

5
+1, Harika cevap. Keşke her
defasında

1
True olarak ayarlandığında ne yapar?
Lorenzo Lerate

"Ant çalışma zamanı kitaplıklarının sınıfyoluna dahil edilip edilmeyeceği; build.sysclasspath ayarlanmadığı sürece varsayılan olarak evettir. Komut dosyasının davranışının çalıştığı ortama duyarlı olmaması için genellikle false olarak ayarlamak en iyisidir. "
Daniel Kutik

72

@Daniel Kutik'in belirttiği gibi presetdef, iyi bir seçenektir. Özellikle kişi build.xml, düzenleyemediği veya düzenlemeyi tercih etmediği birçok dosyaya sahip bir proje üzerinde çalışıyorsa (örn. Üçüncü taraflardan olanlar).

Kullanmak için aşağıdaki presetdefsatırları en üst düzey build.xmldosyanıza ekleyin :

  <presetdef name="javac">
    <javac includeantruntime="false" />
  </presetdef>

Şimdi sonraki tüm javacgörevler esas olarak devralınacaktır includeantruntime="false". Projeleriniz gerçekten çalışma zamanı kitaplıklarına ihtiyaç duyuyorsa, bunları açık bir şekilde yapı dosyalarınıza VEYA kümenize ekleyebilirsiniz includeantruntime="true". İkincisi de uyarılardan kurtulacak.

Sonraki javacgörevler istenirse bunu açıkça değiştirebilir, örneğin:

<javac destdir="out" includeantruntime="true">
  <src path="foo.java" />
  <src path="bar.java" />
</javac>

Kullanmaya karşı tavsiye ederim ANT_OPTS. Çalışır, ancak uyarının amacını yener. Uyarı kişinin inşa biri olduğunu söyler belki başka bir sistemde farklı davranır. Kullanmak ANT_OPTSbunu daha da olası hale getirir, çünkü şimdi her sistem ANT_OPTSaynı şekilde kullanılmalıdır. Ayrıca, ANT_OPTStüm projelerinizde uyarıları bastırmak için küresel olarak geçerli olacak


1
Mevcut bir Ant derleme dosyasını birden fazla javac göreviyle güçlendirmek için harika çalışıyor. Presetdef öğesi, proje öğesinin hemen içine girer.
saxman

@jwfearn: Yerleşik presetdefAnt olmayan görevler için benzer bir numara yapılabilir mi? Bunu denedim scalac, ancak alt build.xmldosyalar elle scalacgörevi tanımlamak zorunda olduğundan, üst düzeyde ayarladığım her şeyi geçersiz kılıyorlar.
Stuart Golodetz

2
Presetdef kullanmanın, javac görevinin yeniden tanımlandığına dair bir karınca uyarısına neden olacağını unutmayın. Addind includeantruntime her javac görev için bunu önler. Uyarının olumsuz yanlarının farkında değilim. Ancak bu, temiz yapılara 'ihtiyaç duyan' insanlar için yararlı olabilir.
mikijov

Evet presetdef "Görev javacının eski tanımını geçersiz kılmaya çalışıyor"
Mike Jones

62

Chet Hosey buraya güzel bir açıklama yazdı :

Tarihsel olarak Ant, javac görevine sunulan sınıfyoluna her zaman kendi çalışma zamanını dahil etti. Bu yüzden Ant ile birlikte gelen tüm kütüphaneler ve ant tarafından sunulan tüm kütüphaneler, ister beğensin ister istemesin otomatik olarak yapınızın sınıf yolundadır.

Muhtemelen çoğu insanın istediği bu olmadığına karar verildi. Şimdi bunun için bir seçenek var.

Eğer "true" seçerseniz (includeantruntime için), en azından derleme sınıfyolunuzun Ant çalışma zamanını içereceğini bilirsiniz. "False" seçeneğini seçerseniz, derleme davranışının eski sürümler ve 1.8+ arasında değişeceğini kabul edersiniz.

Bu uyarıyı gördüğünüz için rahatsız olduğunuzda, yapılarınız tamamen kırılırsa daha az mutlu olacaksınız. Bu varsayılan davranışı korumak, değiştirilmemiş derleme dosyalarının Ant sürümleri arasında tutarlı bir şekilde çalışmasını sağlar.


3
Her zaman bu en saçma özelliği / mesajı olduğunu düşündüm. Kim yapılandırma yönetimi aracında 'tekrarlanabilir derlemeler' ister? ;)
karmakaze

1
Bu cevap bize uyarının gerçekte ne anlama geldiğini söyleyen tek cevap gibi görünüyor.
ty

26

Daniel'in yanıtı mükemmel çalışıyor. İşte benim build.xml için eklediğim örnek bir snippet:

<target name="compile">
    <mkdir dir="${classes.dir}"/>
    <javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false">
                                                 <!--   ^^^^^^^^^^^^^^^^^^^^^^^^^  -->
        <classpath>
            <path id="application" location="${jar.dir}/${ant.project.name}.jar"/>
            <path id="junit" location="${lib.dir}/junit-4.9b2.jar"/>
        </classpath>
    </javac>
</target>

5

Eğer benim gibi komut satırından çalışmak gibi hızlı cevap yürütme

export ANT_OPTS=-Dbuild.sysclasspath=ignore

Ve sonra karınca betiğini tekrar çalıştır.


Bu bana çok yardımcı oluyor . Kullanıyorum set ANT_OPTS=-Xms40M -Xmx512M -Dbuild.sysclasspath=ignore.
Paul Vargas

5

<property name="build.sysclasspath" value="last"/>Build.xml dosyanızda kullanın

Daha fazla bilgi includeAntRuntimeiçin Ant javac'ta arama yapın

Diğer olası değerler burada bulunabilir


-3

Ben aynı karşı karşıya, ben program ve özellik check-in. tutulması karınca için eski ayarım (jdk1.6.0) ile uyumlu olmayan jdk1.8 için bir güncelleme var. Bu güncelleştirmeyi yükledim. şu an karınca projem başarılı olmak.

Deneyin, umarım bu yardımcı olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.