# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
# - Apache 2
# - Apache License
# - BSD
# - BSD-style license
# - Common Development and Distribution License (CDDL) v1.0
# - Common Public License Version 1.0
# - ICU License
# - MIT License
# - The Apache Software License, Version 2.0
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
#Wed Feb 15 19:07:17 CET 2012
javax.servlet--servlet-api--2.4=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
xerces--xercesImpl--2.7.1=The Apache Software License, Version 2.0
