【问题标题】:Fileset with contains selector for some files but not all文件集包含某些文件的选择器,但不是全部
【发布时间】:2018-01-08 07:50:41
【问题描述】:

我正在尝试使用 notcontains 关键字在我的 Ant 构建中丢弃 @WebService 注释类。但是,它不起作用,并且仍然包含带有 @WebService 注释的类。这是用于将源代码复制到工作构建目录的任务:

<copy todir="${compile.dir}">
    <fileset dir="${src.dir}">
        <include name="**/*" />
        <exclude name="**/*.class" />
        <exclude name="log4j.properties" />
        <exclude name="log4j.properties.*" />
        <exclude name="log4j.xml" />
        <exclude name="log4j.xml.*" />
        <exclude name="*.jocl" />
        <not>
            <contains text="@WebService(" casesensitive="true" />
        </not>
    </fileset>
</copy>

但是,not 部分似乎被忽略了,这些类仍然被复制。为什么这不起作用?语法错了吗?另外,如何添加条件,使限制只涉及.java 文件?

我正在使用Apache Ant(TM) version 1.9.6 compiled on July 8 2015

【问题讨论】:

  • 每次运行前${compile.dir} 是否为空? &lt;copy&gt; 只会对它认为需要复制的任何文件采取措施,它不会删除它在之前运行中复制的文件。
  • 不是。愚蠢的我指望隐式清洁

标签: java jar ant build fileset


【解决方案1】:

(也许这会指导你,它对我有用,但我不太确定我是否完全理解你的要求。)

试试这个文件集:

<fileset dir="${src.dir}">
  <exclude name="**/*.class" />
  <exclude name="log4j.properties" />
  <exclude name="log4j.properties.*" />
  <exclude name="log4j.xml" />
  <exclude name="log4j.xml.*" />
  <exclude name="*.jocl" />
  <or>
    <filename name="**/*.java" negate="yes" />
    <not>
      <contains text="@WebService(" casesensitive="true" />
    </not>
  </or>
</fileset>

一些解释性的cmets:

无需指定&lt;include name="**/*" /&gt;,这是在文件集中隐含的。

当您在文件集(如&lt;not&gt;...&lt;contains&gt;...&lt;/not&gt;)中包含嵌套的selector 时,这将与模式集隐式与(它们彼此隐式或)。请参阅&lt;fileset&gt; 文档:

选择器可用作 FileSet 中的嵌套元素。如果有的话 FileSet 中的选择器不选择文件,文件 不被视为 FileSet 的一部分。这使得 FileSet 等效 到 &lt;and&gt; 选择器容器。

这样做的结果是您需要使用带有两个否定选择器的&lt;or&gt; 选择器容器。换句话说,“如果文件不是 java 文件或者它 匹配文本字符串”,则选择该文件。

如果您愿意,选择器容器也可以等效地这样编写:

<or>
  <not>
    <filename name="**/*.java" />
  </not>
  <not>
    <contains text="@WebService(" casesensitive="true" />
  </not>
</or>

【讨论】:

    猜你喜欢
    • 2011-02-08
    • 1970-01-01
    • 2018-05-06
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    相关资源
    最近更新 更多