【问题标题】:ant patternset partial set蚂蚁模式集部分集
【发布时间】:2015-09-11 17:04:31
【问题描述】:

阅读https://ant.apache.org/manual/dirtasks.html,上面写着

"*这些模式看起来很像 DOS 和 UNIX 中使用的模式: '*' 匹配零个或多个字符,'?'匹配一个字符。”

我想清理以下内容(简单例如:),因为我认为第二种形式更简洁易读(当然,如果您知道正则表达式模式):

<copy todir="${target.dir}" flatten="true" >
   <fileset dir="${source.dir}" >
      <include name="**/*.war" />
      <include name="**/*.ear" />
      <include name="**/*.gar" />
      <exclude name="some-dir/**" />
   </fileset>
</copy>

变成这样:

   <include name="**/*.[weg]ar" />

但这不受支持,即使它类似于 UNIX。

          <include name="**/*.?ar" />

不够,因为我不想包含“*.jar”

实现此目的最有效的方法是什么?

ps:还在 ant-1.7.1 上

【问题讨论】:

  • 我不认为你能做到这一点。这不是正则表达式语法,而是 globbing。您只有 *? 功能,但这些是全局字符而不是正则表达式。
  • 是的,我承认这是 copy / include 构造中唯一可用的选项,但是是否存在具有资源集合或其他东西的替代解决方案......相当于"find * -name "*.[weg]ar",这将解决,然后可以在副本中使用?

标签: regex ant


【解决方案1】:

您应该升级 ant 版本 (>= 1.8.x),然后使用:

<copy todir="${target.dir}" flatten="true" >
 <fileset dir="${source.dir}" >
   <filename regex=".*\.[weg]ar"/>  
 </fileset>
</copy>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多