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