Ниже приведена немного скорректированная версия, которая, надеюсь, находится на пути к тому, что вам нужно.
Обратите внимание, что по умолчанию ant-contrib foreach
не распространяет свойства на вызываемую цель, поэтому вынеобходимо вставить дополнительное param
, чтобы передать значение src
.Это значение необходимо для удаления ведущей части пути.
Я добавил образец целевого свойства, чтобы проиллюстрировать, что вы также можете включить полный путь к корневому каталогуСхема именования jar в пути src
.
Вы увидите, что задача pathconvert
использует переданные значения package
и src
для построения имени (prop
) для jarфайл.Вы должны иметь возможность подготовить задачу jar
для выполнения этой работы.
Я заметил, что, поскольку вы указали dirset
, вы получите все каталоги в иерархии, которые могутвключайте те без классов.Может не быть проблемой для вас.
<target name="properties">
<property name="src" location="src/java/org/pscode" />
</target>
<target name="start" depends="properties">
<foreach target="printOut" param="package">
<param name="src" value="${src}" />
<path>
<dirset dir="${src}" includes="**/*" />
</path>
</foreach>
</target>
<target name="printOut">
<pathconvert property="prop" dirsep=".">
<path location="${package}"/>
<map from="${src}/" to=''/>
</pathconvert>
<echo message="Package jar name: ${prop}.jar"/>
</target>