# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
# - Apache License
# - BSD
# - CDDL 1.1
# - CDDL License
# - Common Public License Version 1.0
# - Eclipse Public License - Version 1.0
# - GNU Lesser General Public License (LGPL), Version 2.1
# - GPL2 w/ CPE
# - MIT License
# - New BSD License
# - Public Domain
# - Revised BSD
# - The Apache Software License, Version 2.0
# - The BSD 3-Clause License
# - The BSD License
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
#Mon Jan 26 15:56:57 GMT 2015
asm--asm--3.1=The BSD 3-Clause License
commons-beanutils--commons-beanutils--1.7.0=The Apache Software License, Version 2.0
javax.servlet--servlet-api--2.5=CDDL License
javax.servlet.jsp--jsp-api--2.1=CDDL License
org.apache.zookeeper--zookeeper--3.4.6=The Apache Software License, Version 2.0
org.codehaus.jettison--jettison--1.1=The Apache Software License, Version 2.0
