我正在尝试使用bundle.js
和@WebService
关键字在我的Ant版本中放弃not
带注释的类。但是,它不起作用,仍然包含使用contains
注释的类。以下是用于将源复制到工作构建目录的任务:
@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
。
答案 0 :(得分: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>
一些解释性评论:
没有必要指定<include name="**/*" />
这是隐含在文件集中的。
如果在文件集中包含嵌套的selector(如<not>...<contains>...</not>
),则会与模式集(它们彼此隐式OR运算)进行隐式AND运算。请参阅<fileset>
文档:
选择器可用作FileSet中的嵌套元素。如果有的话 FileSet中的选择器不选择文件,即文件 不被视为FileSet的一部分。这使得FileSet等效 到
<and>
选择器容器。
这样做的结果是你需要使用带有两个负选择器的<or>
选择器容器。换句话说,“选择文件,如果它不是一个java文件,或者不匹配文本字符串”。
如果你愿意,可以用这种方式写出选择器容器:
<or>
<not>
<filename name="**/*.java" />
</not>
<not>
<contains text="@WebService(" casesensitive="true" />
</not>
</or>