# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
# - (MIT-style) netCDF C library license.
# - Apache Software License
# - Apache Software License, Version 2.0
# - BSD License
# - BSD style license
# - Bouncy Castle Licence
# - 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
# - Mozilla Public License 1.1 (MPL 1.1)
# - Public Domain License
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
#Sun Oct 07 18:15:10 CEST 2012
asm--asm--3.1=Public Domain License
dom4j--dom4j--1.6.1=BSD style license
javax.servlet--servlet-api--2.5=Common Development And Distribution License (CDDL), Version 1.0
jdom--jdom--1.0=Apache Software License, Version 2.0
org.osgi--org.osgi.compendium--4.1.0=Apache Software License, Version 2.0
org.osgi--org.osgi.core--4.1.0=Apache Software License, Version 2.0
