<b>Tag:</b> version-matchers <span class="tagdoc" id="ivysettings.version-matchers">Defines a list of version matchers.</span> <span class="since">since 1.4</span> The child tag used for the version matcher must be equal to a name of a report outputter type (added with the typedef tag). A version matcher is used to evaluate if a dependency version constraint matches a dependency version. <h1>Attributes</h1> <table class="ivy-attributes"> <thead> <tr><th class"ivy-att">Attribute</th><th class="ivy-att-desc">Descrition</th><th class="ivy-att-req">Required</th></tr> </thead> <tbody> <tr><td>usedefaults</td> <td>when set to true, includes the built-in version matchers (Latest, Sub Revision, and Version Ranger Matcher). Exact Revision Matcher is always included</td> <td>No, defaults to false</td> </tr> </tbody> </table> <h1>Child elements</h1> <table class="ivy-children"> <thead> <tr><th class="ivy-chld">Element</th><th class="ivy-chld-desc">Description</th><th class="ivy-chld-card">Cardinality</th></tr> </thead> <tbody> <tr><td>any version matcher</td><td>adds a version matcher to the list of available ones</td> <td>0..n</td></tr> </tbody> </table> <h1>Built-in Version Matchers</h1> <h2>Exact Revesion Matcher</h2> A matcher that matches a dependency revision id to the module revision id using simple string equality. <h2>Sub Revision Matcher</h2> A matcher that matches all revisions starting with a specific prefix. The syntax is: [prefix]+ <table class="ivy-children"> <thead> <tr><th class="ivy-chld">Revision</th><th class="ivy-chld-desc">Matches</th></tr> </thead> <tbody> <tr><td>1.0.+</td><td>all revisions starting with '1.0.', like 1.0.1, 1.0.5, 1.0.a</td></tr> <tr><td>1.1+</td><td>all revisions starting with '1.1', like 1.1, 1.1.5, but also 1.10, 1.11</td></tr> </table> <h2>Latest (Status) Matcher</h2> A matcher that matches versions based on their status. The predefined statuses in Ivy are 'release', 'milestone' and 'integration'. It's possible to define your own statuses, see [[settings/statuses]] for more details. <table class="ivy-children"> <thead> <tr><th class="ivy-chld">Revision</th><th class="ivy-chld-desc">Matches</th></tr> </thead> <tbody> <tr><td>latest.integration</td><td>all versions</td></tr> <tr><td>latest.milestone</td><td>all modules having at least 'milestone' as status</td></tr> <tr><td>latest.release</td><td>all modules having at least 'release' as status</td></tr> <tr><td>latest.[any status]</td><td>all modules having at least the specified status</td></tr> </table> <h2>Version Range Matcher</h2> Range types are exhaustively listed by example in the table below. <table class="ivy-children"> <thead> <tr><th class="ivy-chld">Revision</th><th class="ivy-chld-desc">Matches</th></tr> </thead> <tbody> <tr><td> [1.0,2.0] </td><td> all versions greater or equal to 1.0 and lower or equal to 2.0</td></tr> <tr><td> [1.0,2.0[ </td><td> all versions greater or equal to 1.0 and lower than 2.0</td></tr> <tr><td> ]1.0,2.0] </td><td> all versions greater than 1.0 and lower or equal to 2.0<tr> <tr><td> ]1.0,2.0[ </td><td> all versions greater than 1.0 and lower than 2.0</td></tr> <tr><td> [1.0,) </td><td> all versions greater or equal to 1.0 </td></tr> <tr><td> ]1.0,) </td><td> all versions greater than 1.0</td></tr> <tr><td> (,2.0] </td><td> all versions lower or equal to 2.0</td></tr> <tr><td> (,2.0[ </td><td> all versions lower than 2.0 </td></tr> </tbody> </table> <h2>Version Pattern Matcher</h2> The version pattern matcher allows for more flexibility in pattern matching at the cost of adding a matcher declaration in Ivy settings. A simple example is given below. <h3>Settings.xml</h3> <code type="xml"> <pattern-vm> <match revision="foo" pattern="${major}\.${minor}\.\d+" args="major, minor" matcher="regexp" /> </pattern-vm> </code> <h3>Ivy.xml</h3> <code type="xml"> <dependency org="acme" name="tool" rev="foo(1, 3)" /> </code> The version pattern matcher may contain more than one match element. The matcher will attempt to match a dependency revision against each match in sequence, checking the revision tag (e.g. foo(..)) and then the pattern. Matcher types may be one of "regexp", "exact", "glob", or "exactOrRegexp". Glob pattern matching requires Apache ORO 2.0.8 or higher to be on the classpath.