# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
# - Apache License
# - BSD
# - CDDL + GPLv2 with classpath exception
# - CDDL 1.1
# - CDDL License
# - CDDL+GPL
# - Common Public License Version 1.0
# - Eclipse Public License - Version 1.0
# - GNU Lesser General Public License (LGPL), Version 2.1
# - GNU Lesser General Public License, Version 2.1
# - GPL2 w/ CPE
# - MIT License
# - MPL 1.1
# - New BSD License
# - Public Domain
# - Revised BSD
# - The Apache Software License, Version 2.0
# - The BSD 3-Clause License
# - The BSD License
# - The MIT License
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
#Thu Oct 15 16:45:02 EDT 2015
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
