# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
# - Aduna BSD license
# - Apache Software License
# - Apache Software License, Version 2.0
# - BSD License
# - BSD style license
# - Bouncy Castle Licence
# - CDDL v1.1
# - 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
# - Public Domain License
# - iCal4j - License
# - mstor License
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
#Sun Oct 07 16:45:31 CEST 2012
com.drewnoakes--metadata-extractor--2.4.0-beta1.bundle=The Apache Software License, Version 2.0
com.sun.xml.bind--jaxb-impl--2.1.9.bundle=CDDL v1.1
dom4j--dom4j--1.6.1=BSD style license
javax.servlet--servlet-api--2.5=Common Development And Distribution License (CDDL), Version 1.0
javax.xml.bind--jaxb-api--2.1.9.v200905050702_orbit=CDDL v1.1
mp3agic--mp3agic--0.6=MIT License
net.fortuna.ical4j--ical4j-vcard--0.9.3.ant20100406=iCal4j - License
net.sourceforge--htmlcleaner--2_1p=BSD License
net.sourceforge.juniversalchardet--juniversalchardet--1.0.3.bundle=Mozilla Public License 1.1
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
org.semanticdesktop.nepomuk--aperture-tools-demork--1.0.0=BSD-style license
