2010-03-16 16 views
6

echo bir eclipse .project dosyasının içeriğinin olduğu bir karınca hedef var, buradaki fikir, projenin tutularak kolayca içe aktarılabildiğinden emin olmak için . Proje adı, girişinin bulunduğu diziyle eşleşmelidir. Şimdiye kadarant basedir ve eclipse.proje dosya üretimi

<target name="eclipse" description="creates an eclipse .project file"> 
    <echo file=".project"> 
     <![CDATA[<?xml version="1.0" encoding="UTF-8"?> 
     <projectDescription> 
      <name>${basedir}</name> 
      <comment></comment> 
      <projects> 
      </projects> 
      <buildSpec> 
       <buildCommand> 
        <name>org.eclipse.jdt.core.javabuilder</name> 
        <arguments> 
        </arguments> 
       </buildCommand> 
      </buildSpec> 
      <natures> 
       <nature>org.eclipse.jdt.core.javanature</nature> 
      </natures> 
     </projectDescription> 
     ]]> 
    </echo>  
</target> 

sorun $ {basedir} olan bir tam yol

<name>/home/assure/projects/MyProject</name> 

olarak değerlendirilirse ancak nihai klasör adı üstünde

<name>MyProject</name> 

Herhangi bir fikir ihtiyacı eclipse bu var Bu yolu soymak için kullanmam gereken karınca hedefi?

cevap

3

Önce "basename" yolunun son dizinine bağlı olarak bir özellik tanımlayabilirsiniz.
Eğer basedir değerini kesmek için karınca 'flattenmapper' kullanarak bir geçici çözüm bulmuştu

<projectDescription> 
    <name>${project.name}</name> 
4

Senaryonuzun geri kalanında o mülkü yeniden kullanıma izin veren

<basename property="project.name" file="${basedir}"/> 

(Ant basename Task bakınız)

<path id="basedir.path"> 
     <pathelement path="${basedir}" /> 
    </path> 
    <pathconvert property="project.name" refid="basedir.path"> 
     <chainedmapper> 
      <mapper type="flatten"/> 
      <flattenmapper/> 
     </chainedmapper> 
    </pathconvert> 
    <echo message="${project.name}" /> 

ancak 1 satır her zaman 10 hatları, ;-)

yener
+0

Karmaşık ama hoş bir geri bildirim geliyor. +1 – VonC