2010-03-16 13 views
6

Mam obiekt docelowy, którego echo jest zawartością pliku projektu zaćmienia. Pomysł polega na zapewnieniu, że projekt można łatwo zaimportować do środowiska Eclipse. Nazwa projektu powinna być zgodna z katalogiem, w którym znajduje się jego zamówienie. Mam to tak dalekoGenerowanie plików opartych na ant i eclipse .project

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

Problemem jest $ {basedir} ocenia do pełnej ścieżki

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

ale eclipse potrzebuje jedynie ostateczna nazwa folderu

<name>MyProject</name> 

Wszelkie pomysły cel mrówki powinienem użyć do usunięcia tej ścieżki?

Odpowiedz

3

Najpierw można zdefiniować właściwość, w oparciu o ostatni katalog ścieżki "basename".
(patrz Ant basename Task)

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

który pozwala na ponowne użycie tej nieruchomości w pozostałej części skryptu

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

znalazłem obejście pomocą mrówka „flattenmapper” przyciąć wartość basedir

<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}" /> 

ale zawsze bije 1 linia 10 linie ;-)

+0

Brzmi skomplikowanie, ale przyjemnie. +1 – VonC

Powiązane problemy