The <clover-setup> has two similar tags:
In both of them we can specify inclusion/exclusion pattern for instrumentation.
What are the differencies?
The <files> is an Ant's PatternSet. It means that you do not specify any root directory, but only path fragments for inclusion/exclusion patterns.
The <fileset> is an Ant's DirSet. Therefore it has a "dir" attribute and uses a standard Ant's DirectoryScanner to find sources for inclusion/exclusion.
But there are more differencies.
Because of fact that <fileset> is a DirSet, it is being resolved by Ant at the time when it processes the <clover-setup> task configuration. It means that base directory specified in the "dir" attribute as well as source files to be included/excluded must be present at the time when the <clover-setup> task is called.
It has implication for instance in case when you use Clover and generate sources and want to exclude them. In such case you have to ensure that <clover-setup> is called after source generation (otherwise sources won't be put into Clover's exclusion list).
Alternatively, you could switch to the <files> PatternSet.
Because of fact that <files> is a PatternSet, it is being resolved by Clover at the time when it instrument sources, i.e. at the moment when the <javac> task (intercepted by Clover) is called.
It means that files do not have to be present at the time when <clover-setup> is called in order to be properly included/excluded.
And how paths defined in the <files> PatternSet are matched against sources?
Well, they're being matched against source roots passed to <javac>. So you shall define values of includes/excludes attributes as paths relative to the <javac srcdir="..."> attribute.
There is one more difference between the <files> and the <fileset>. First one performs the same pattern matching on all source roots. Second one has the "dir" attribute, which you can use to restrict pattern matching to certain source roots.
Imagine a case in which you have "src" and "test" folders, both containing the "com.acme" package (among other packages) and that you want to exclude it from instrumentation.
<files><excludes name="com/acme/**"></files>
excludes "com.acme.*" from both the "src" and the "test" folders.
<fileset dir="test"><excludes name="com/acme/**"></fileset>
excludes "com.acme.*" from the "test" folder only.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.