# 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
# - 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
# - Public Domain License
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
#Tue Feb 28 09:40:11 CET 2012
asm--asm--3.1=Public Domain License
dom4j--dom4j--1.6.1=BSD style license
javax.servlet--servlet-api--2.4=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
