<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  The ASF licenses this file to You
  under the Apache License, Version 2.0 (the "License"); you may not
  use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.  For additional information regarding
  copyright in this work, please see the NOTICE file in the top level
  directory of this distribution.
-->
<ruleset comparisonMethod="maven"
         xmlns="http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0 http://mojo.codehaus.org/versions-maven-plugin/xsd/rule-2.0.0.xsd">
    <ignoreVersions>
        <!--only release builds-->
        <ignoreVersion type="regex">.*(alpha|ALPHA|beta|BETA|b|rc|RC|M).*</ignoreVersion>
        
        <!--ignore some specific version strings which don't follow the common version format-->
        <ignoreVersion type="exact">20020829</ignoreVersion>
        <ignoreVersion type="exact">20040616</ignoreVersion>
        <ignoreVersion type="exact">20040102.233541</ignoreVersion>
        <ignoreVersion type="exact">20031027.000000</ignoreVersion>
        <ignoreVersion type="exact">20030418.083655</ignoreVersion>
    </ignoreVersions>

</ruleset>
