2010-03-16 149 views
6

我有一个蚂蚁目标回声的eclipse .project文件的内容,这里的想法是确保 该项目很容易导入到eclipse。项目名称应与其结账目录 匹配。我有这个迄今为止蚂蚁basedir和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> 

的问题是$ {BASEDIR}计算结果为完整路径

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

但是Eclipse只需要最后的文件夹名称

<name>MyProject</name> 

任何想法上我应该用蚂蚁目标来剥夺这条道路?

回答

3

您可以首先根据路径“basename”的最后一个目录定义一个属性。
(见Ant basename Task

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

这允许你使用ant“flattenmapper”修剪BASEDIR值重用财产

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

我找到了一个解决方法脚本的其余部分

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

但1行总是跳动10行,;-)

+0

听起来很复杂,但很好的反馈。 +1 – VonC 2010-03-16 15:36:59