我正在使用ant中的jar
任务,并希望排除某个目录。目录的结构类似于:
food
|_ fruits
|_ apples
|_ bananas
(已经通用并简化了一点)
我有一个像这样的蚂蚁任务:
<jar destfile="Dest.jar">
...
<fileset dir="food">
<exclude name="**/bananas/" />
<exclude name="**/*Test*" />
<include name="**/*.class" />
</fileset>
...
我想做的是:
我试图排除香蕉目录时尝试了几种通配符组合,但无济于事。我也尝试重新排序包含和排除,但我不知道这是否有所作为。我还尝试了其他一些没有做到这一点的建议[1] [2]。我现在的猜测是,在香蕉目录中,有一些文件与“* .class”匹配,所以我认为它们的包含是为了防止香蕉被排除在外。
注意:我完全匹配香蕉目录的真实名称,所以区分大小写应该不是问题。如果它可以使任务更简单,我可以引用目录的完整路径,虽然我更喜欢在ant任务中更加重构。
如何排除已包含在ant文件集中的目录?
[1] http://www.velocityreviews.com/forums/t146608-in-ant-how-do-you-exclude-a-directory-from-copy-or-zip.html
[2] http://www.java2s.com/Tutorial/Java/0520__Ant/filesetwithexclude.htm
答案 0 :(得分:2)
我发现了问题的原因,这与蚂蚁任务的编写方式无关。
问题似乎与文件集无关,包括和排除,更多与jar文件是否实际创建有关。重复运行任务,并始终使用jar的相同目标,似乎创建的jar文件没有替换现有的jar(正如我所假设的那样)。删除jar并重新运行ant任务产生了我期望的结果。
我不知道我是否应该为假设文件被替换而感到愚蠢,或者如果我感到委屈是对的,没有关于它的日志消息,欢迎评论。 Anyhoo,问题解决了。