У меня есть целевой объект Ant, что эхо содержание затмения .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>
но затмите, только нуждается в заключительном имени папки
<name>MyProject</name>
Какие-либо идеи о целевом объекте Ant я должен использовать для разделения этого пути?
Можно сначала определить свойство, основанное на последнем каталоге пути "basename".
(см. Ant basename
Task)
<basename property="project.name" file="${basedir}"/>
Это позволит вам повторно использовать это свойство в остальной части вашего скрипта
<projectDescription>
<name>${project.name}</name>
Я нашел обходной путь, используя 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}" />
но 1 строка всегда побеждает 10 строк, ;-)