# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
# - Apache Software License
# - Apache Software License, Version 2.0
# - BSD 3-Clause License
# - BSD License
# - Common Development And Distribution License (CDDL), Version 1.0
# - Common Development And Distribution License (CDDL), Version 1.1
# - Common Public License, Version 1.0
# - Eclipse Public License, Version 1.0
# - GNU General Public License (GPL), Version 2 with classpath exception
# - GNU Lesser General Public License (LGPL)
# - GNU Lesser General Public License (LGPL), Version 2.1
# - ICU License
# - MIT License
# - Public Domain License
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
#Tue Jul 23 16:38:24 CEST 2013
javax.servlet--servlet-api--2.5=Common Development And Distribution License (CDDL), Version 1.0
org.osgi--org.osgi.compendium--4.1.0=The Apache Software License, Version 2.0
org.osgi--org.osgi.core--4.1.0=The Apache Software License, Version 2.0
