如何使用通配符创建 Ant 的符号链接?
How to create an Ant's symlink with wildcard?
我尝试创建一个 symlink,例如:
<symlink link="${basedir}/docroot" resource="${basedir}/drupal-7.*" overwrite="true"/>
然而,该行并没有扩展通配符,而是创建了一个 link,它直接指向 drupal-7.*
,而不是 drupal-7.56
。
我尝试使用 examples with fileset
on this page,但它并没有真正涵盖我的场景。
如何创建指向动态文件夹(由 drupal-7.*
扩展的文件夹)的 Ant 符号link?
这里是调用shell命令的解决方案:
<exec executable="sh" failonerror="true" dir="${basedir}" outputproperty="drupaldir">
<arg value="-c"/>
<arg value="echo drupal-7*"/>
</exec>
<symlink link="${basedir}/docroot" resource="${basedir}/${drupaldir}" overwrite="true"/>
您应该使用 dirset
instead of fileset
来包含目录,而不是文件。此外,检查意外数量的目录可能是个好主意。
示例如下:
<dirset dir="${basedir}" includes="drupal-7.*" id="link.target" />
<fail message="Multiple or zero drupal-7.* directories found.">
<condition>
<not>
<resourcecount refid="link.target" when="equal" count="1" />
</not>
</condition>
</fail>
<symlink link="${basedir}/docroot" resource="${toString:link.target}" />
我尝试创建一个 symlink,例如:
<symlink link="${basedir}/docroot" resource="${basedir}/drupal-7.*" overwrite="true"/>
然而,该行并没有扩展通配符,而是创建了一个 link,它直接指向 drupal-7.*
,而不是 drupal-7.56
。
我尝试使用 examples with fileset
on this page,但它并没有真正涵盖我的场景。
如何创建指向动态文件夹(由 drupal-7.*
扩展的文件夹)的 Ant 符号link?
这里是调用shell命令的解决方案:
<exec executable="sh" failonerror="true" dir="${basedir}" outputproperty="drupaldir">
<arg value="-c"/>
<arg value="echo drupal-7*"/>
</exec>
<symlink link="${basedir}/docroot" resource="${basedir}/${drupaldir}" overwrite="true"/>
您应该使用 dirset
instead of fileset
来包含目录,而不是文件。此外,检查意外数量的目录可能是个好主意。
示例如下:
<dirset dir="${basedir}" includes="drupal-7.*" id="link.target" />
<fail message="Multiple or zero drupal-7.* directories found.">
<condition>
<not>
<resourcecount refid="link.target" when="equal" count="1" />
</not>
</condition>
</fail>
<symlink link="${basedir}/docroot" resource="${toString:link.target}" />