# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
# - Apache License Version 2.0, January 2004
# - Apache Software License
# - Apache Software License, Version 2.0
# - 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 :
#
#
#Sun Oct 07 18:21:39 CEST 2012
asm--asm--3.1=BSD License
javax.servlet--servlet-api--2.5=Common Development And Distribution License (CDDL), Version 1.0
org.codehaus.jettison--jettison--1.3=The Apache Software License, Version 2.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
xerces--xercesImpl--2.7.1=The Apache Software License, Version 2.0
