代码之家  ›  专栏  ›  技术社区  ›  emeraldjava

ant basedir和eclipse.project文件生成

  •  6
  • emeraldjava  · 技术社区  · 16 年前

    我有一个Ant目标echo是eclipse.project文件的内容,这里的想法是确保 这个项目很容易导入Eclipse。项目名称应与 它的收银台。到目前为止我有这个

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

    关于蚂蚁的目标,我有什么想法可以用来剥离这条路吗?

    2 回复  |  直到 15 年前
        1
  •  3
  •   martin clayton egrunin    15 年前

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

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

    它允许您在脚本的其余部分中重用该属性

    <projectDescription>
        <name>${project.name}</name>
    
        2
  •  4
  •   emeraldjava    16 年前

    我发现了一个使用ant flattenmapper来修剪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}" />
    

    但一行总比十行强;—)