#set( $latestRelease = "1.6.0" )
#set( $versionInfo = {"1.6.0": { "releaseDate": "2020-08-17" } } )

#set( $shiroCore = {"g":"org.apache.shiro", "a": "shiro-core", "type": "jar",
                    "description": 'Required in all environments. <a class="external-link" href="http://slf4j.org/">Slf4j</a>''s
                     <code>slf4j-api</code> jar and one of its binding jars is required. <code>commons-beanutils</code> is
                     required only if using INI config.'})

#set ($shiroWeb = {"g": "org.apache.shiro", "a": "shiro-web", "type": "jar",
                "description": "Enables support for web-based applications."})

#set ($shiroServletPlugin = {"g": "org.apache.shiro", "a": "shiro-servlet-plugin", "type": "jar",
    "description": "Servlet Fragment which configures Shiro's servlet filter."})

#set ($shiroJaxrs = {"g": "org.apache.shiro", "a": "shiro-jaxrs", "type": "jar",
    "description": "Enables support for JAX-RS applications."})

#set ($shiroAspectJ = {"g": "org.apache.shiro", "a": "shiro-aspectj", "type": "jar",
    "description": 'Enables <a class="external-link" href="http://www.eclipse.org/aspectj/">AspectJ</a> support for Shiro AOP and Annotations.'})

#set ($shiroCas = {"g": "org.apache.shiro", "a": "shiro-cas", "type": "jar",
    "description": "Enables Jasig <a class='external-link' href='https://wiki.jasig.org/display/CAS/Home'>CAS</a> support.
                    #warning('NOTE:', 'Shiro-CAS support is deprecated, support has been moved to the Apache Shiro based <a href=''https://github.com/bujiio/buji-pac4j''>buji-pac4j</a> project.')"})

#set ($shiroEhCache = {"g": "org.apache.shiro", "a": "shiro-ehcache", "type": "jar",
    "description": 'Enables <a class="external-link" href="http://www.ehcache.org">Ehcache</a>-based famework caching.'})

#set ($shiroHazelcast = {"g": "org.apache.shiro", "a": "shiro-hazelcast", "type": "jar",
    "description": 'Enables <a class="external-link" href="https://hazelcast.org">Hazelcast</a>-based famework caching.'})

#set ($shiroFeatures = {"g": "org.apache.shiro", "a": "shiro-features", "c": "features", "type": "xml",
    "description": 'OSGi / <a class="external-link" href="http://karaf.apache.org/">Apache Karaf</a> integration.'})

#set ($shiroGuice = {"g": "org.apache.shiro", "a": "shiro-guice", "type": "jar",
    "description": 'Enables <a class="external-link" href="https://github.com/google/guice">Google Guice</a> integration.'})

#set ($shiroQuartz = {"g": "org.apache.shiro", "a": "shiro-quartz", "type": "jar",
    "description": 'Enables <a class="external-link" href="http://www.quartz-scheduler.org/">Quartz</a>-based scheduling for Shiro native session validation.'})

#set ($shiroSpring = {"g": "org.apache.shiro", "a": "shiro-spring", "type": "jar",
    "description": 'Enables <a class="external-link" href="https://spring.io/">Spring Framework</a> integration.'})

#set ($shiroSpringBoot = {"g": "org.apache.shiro", "a": "shiro-spring-boot-starter", "type": "jar",
    "description": '<a class="external-link" href="https://spring.io/">Spring Boot</a> starter.'})

#set ($shiroSpringBootWeb = {"g": "org.apache.shiro", "a": "shiro-spring-boot-web-starter", "type": "jar",
    "description": '<a class="external-link" href="https://spring.io/">Spring Boot</a> web starter.'})

#set ($shiroHasher = {"g": "org.apache.shiro.tools", "a": "shiro-tools-hasher", "c": "cli", "type": "jar", "gavAlt": '<b>Not Relevant</b>',
    "description": "A command-line program to perform hashing (MD5, SHA, etc) for files, streams and passwords.
                    Note that this is a command line program and not intended to be used as a Maven/program
                    dependency. It is intended to be downloaded and executed:
                    <pre><code class='bash'> java -jar shiro-tools-hasher-%version%-cli.jar</code></pre>"})

#set ($shiroAll = {"g": "org.apache.shiro", "a": "shiro-all", "type": "jar", "gavAlt": '<b>Not Recommended</b>',
    "description": 'Includes all binary functionality for Shiro (without dependencies), useful in certain build
                    environments (e.g. Ant). However, this is <b>NOT</b> recommended in Maven builds as it does not
                    retain correct dependency metadata, which can lead to Maven working incorrectly. For Maven builds,
                    it is <b>highly</b> recommended to specify individual modules listed below as you require them.'})


#set( $shiro11x = {"version": "1.1.0", "artifacts": [
    $shiroAll,
    $shiroCore,
    $shiroWeb,
    $shiroAspectJ,
    $shiroEhCache,
    $shiroQuartz,
    $shiroSpring
]} )

#set( $shiro12x = {"version": "1.2.6", "artifacts": [
    $shiroAll,
    $shiroCore,
    $shiroWeb,
    $shiroAspectJ,
    $shiroCas,
    $shiroEhCache,
    $shiroFeatures,
    $shiroGuice,
    $shiroQuartz,
    $shiroSpring,
    $shiroHasher
]} )

#set( $shiro13x = {"version": "1.3.2", "artifacts": [
    $shiroAll,
    $shiroCore,
    $shiroWeb,
    $shiroAspectJ,
    $shiroCas,
    $shiroEhCache,
    $shiroHazelcast,
    $shiroFeatures,
    $shiroGuice,
    $shiroQuartz,
    $shiroSpring,
    $shiroHasher
]} )

#set( $shiro14x = {"version": "1.4.2", "artifacts": [
    $shiroAll,
    $shiroCore,
    $shiroWeb,
    $shiroServletPlugin,
    $shiroJaxrs,
    $shiroAspectJ,
    $shiroCas,
    $shiroEhCache,
    $shiroHazelcast,
    $shiroFeatures,
    $shiroGuice,
    $shiroQuartz,
    $shiroSpring,
    $shiroSpringBoot,
    $shiroSpringBootWeb,
    $shiroHasher
]} )

#set( $shiro15x = {"version": "1.5.3", "artifacts": [
    $shiroAll,
    $shiroCore,
    $shiroWeb,
    $shiroServletPlugin,
    $shiroJaxrs,
    $shiroAspectJ,
    $shiroCas,
    $shiroEhCache,
    $shiroHazelcast,
    $shiroFeatures,
    $shiroGuice,
    $shiroQuartz,
    $shiroSpring,
    $shiroSpringBoot,
    $shiroSpringBootWeb,
    $shiroHasher
]} )

#set( $shiro16x = {"version": $latestRelease, "artifacts": [
    $shiroAll,
    $shiroCore,
    $shiroWeb,
    $shiroServletPlugin,
    $shiroJaxrs,
    $shiroAspectJ,
    $shiroCas,
    $shiroEhCache,
    $shiroHazelcast,
    $shiroFeatures,
    $shiroGuice,
    $shiroQuartz,
    $shiroSpring,
    $shiroSpringBoot,
    $shiroSpringBootWeb,
    $shiroHasher
]} )

