Ant脚本将文件名和扩展名拆分为2个单独的属性

时间:2012-12-05 04:18:54

标签: ant

我有一个文件集,说有10个带扩展名的文件。我需要接受这个并将文件名和扩展名分成两个独立的属性/变量但不确定如何。我需要将这个文件作为一个文件开始在Unix上作为XB12345.FILE启动,我需要将其移至I / 5系统,文件名为XB12345.FILE,成员为FILE.MBR。大多数文件没有一致的扩展名,只能在运行时知道。任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:4)

这听起来像是Ant-Contrib任务的工作。

Ant-Contrib任务已经存在了很长时间,在Ant项目中很常见。 PropertyRegex任务将按您的要求执行。实际上,甚至还有For任务可以处理循环。

<PropertyRegEx>任务看起来像这样:

<propertyregex property="base.name"
    input="file.name"
    regexp="(.*)\.(.*)"
    select="\1"/>

<propertyregex property="suffix.name"
    input="file.name"
    regexp="(.*)\.(.*)"
    select="\2"/>

如果您按照以下步骤安装Ant-Contrib任务非常简单:

  • 下载ant-contrib-1.0b3.jar
  • 在项目的根目录中创建名为antlib/ac
  • 的目录
  • 放置ant-contrib-1.0b3.jar file in the antlib / ac`目录。
  • 添加任务定义。

像这样:

<taskdef resource="net/sf/antcontrib/antlib.xml">
    <classpath>
        <fileset dir="${basedir}/antlib/ac"/>
    <classpath>
</taskdef>

如果您使用版本控制系统,请将ant-contrib-1.0b3.jar文件签入到项目的版本控制系统中。现在,当有人需要进行构建时,他们会检查您的项目,并且已经定义了Ant Contrib任务,并且Ant-Contrib jar就在那里。开发人员无需安装Ant-Contrib。你的构建工作正常。

答案 1 :(得分:0)

虽然propertyregex是预期问题的解决方案,但您必须使用覆盖属性为您解决。

<propertyregex property="base.name"
    input="file.name"
    regexp="(.*)\.(.*)"
    select="\1" override="true"/>

<propertyregex property="suffix.name"
    input="file.name"
    regexp="(.*)\.(.*)"
    select="\2" override="true"/>