Ant

2009-08-01 33 views
21

kullanarak jar dosyasına kod olmayan kaynaklar ekleyerek java uygulamamı bir jar dosyasına paketleme işlemindeyim. Ant ve tutulma kullanıyorum. Aslında, kavanozda, kodla aynı yerde değil, doğrudan kök klasörün altında birkaç ayrı, kod olmayan dosya (xml ve txt dosyaları) eklemem gerekir. Ben includesfile argüman atladığınızdaAnt

<target name="distribute" depends="compile" includesfile="readthis.txt"> 
    <jar destfile="${distributionDir}/myjar.jar" > 
     <fileset dir="${outputDir}"/> 
    <fileset dir="${sourceDir}"/>   
    </jar> 
</target> 

yukarıdaki çalışıyor:

Ben includesfile kullanmaya çalışıyorum, ancak bu işe görünmüyor, işte karınca hedeftir. Ayrıca, birden fazla kod olmayan dosya eklemem gerekiyor. Bu dosyalar, herhangi bir java paketinde değil, Eclipse'deki kök proje klasörü altında bulunur.

Ayrıca, yukarıda gördüğünüz gibi, temel olarak kaynak koduma da dahil ediyorum. Kaynak kodunu derlenmiş koddan ayrı bir klasöre koymak için jar görevini anlatmanın bir yolu var mı?

Bir derleme veya derleme görevi olarak, Ant, derlenmiş sınıflardan kaynak kodunu kolayca ayırabilir. Ama bir kavanoz dosyası içinde bunu yapmak için bir yolu var mı?

Zaman ayırdığınız için çok teşekkürler!

cevap

34

Sen Başlamak için bir hedefi bir includesfile niteliği olmamalıdır ve ben yine bunun noktasını yanlış anladın şüpheli - fikir includesfile ile belirttiğiniz dosya hangi dosyaların modellerini içerdiğini olmasıdır Bunları Ant dosyanızın içine koymak istemiyorsanız.

İhtiyacınız olan tüm dosyaların ihtiyaç duyduğunuz dosyaları içeren ek bir dosya grubu olduğunu bana vuruyor. Örneğin, readthis.txt için:

<target name="distribute" depends="compile"> 
    <jar destfile="${distributionDir}/myjar.jar" > 
    <fileset dir="${outputDir}"/> 
    <fileset dir="${sourceDir}"/> 
    <fileset file="readthis.txt" /> 
    </jar> 
</target> 

Sana kaynakları için yeni bir dizin oluşturmak olduğunu da öneririm, böylece yapabilirsiniz:

<target name="distribute" depends="compile"> 
    <jar destfile="${distributionDir}/myjar.jar" > 
    <fileset dir="${outputDir}"/> 
    <fileset dir="${sourceDir}"/> 
    <fileset dir="${resourcesDir}" /> 
    </jar> 
</target> 

hiçbir güçlük. Bu ayrıca dizin yapınızı daha temiz tutacak ve yukarıdan aşağı doğru şeyler bulmanızı kolaylaştıracak.

+0

Teşekkürler! Bu kesinlikle yardımcı oldu. Ben de jar sınıfını derlenmiş sınıflardan kaynağa ayırmak için söyleyebilir miyim diye merak ediyordum? Şu anda, hem kaynak hem de sınıflar aynı paket yapısında yer almaktadır, Kavanoz görevi çıktı ve src klasörlerini korumalı mı? Kavanozu genişletdiğimde, myjar/code/my/package/file.java ve file.class dosyasında görüyorum ki Kavanoz görevinin aşağıdaki gibi klasörleri koruyabileceğini düşündüm: myjar/code/my/package /source/file.java - ve ayrı ayrı myjar/code/my/package/build/file.class Kavanoz görevi kullanımımda bir şey eksik mi? – denchr

+0

Hayır yanlışsınız. Yan yana olmalılar. Kavanoz kod/benim/paket/build/file.class gibi bir klasör yapısı içeriyorsa, bu durumda paketin adı code.my.package.build olmalıdır. Ayrıca kaynakları ikinci bir JAR dosyasına da yerleştirebilirsiniz. –

+0

Ne demek istediğini görüyorum. Benim önerdiğim gibi bir şey, paket isimlendirmesiyle ilgili imalara sahip olacak ... Yani, genel olarak, eğer jarma dosyama kaynak eklemek istersem, * derlenmiş yapı ile aynı klasörde olmak için * vardır. – denchr