# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
# - Aduna BSD license
# - Apache License
# - BSD License
# - BSD license
# - BSD-style license
# - Bouncy Castle Licence
# - Common Development and Distribution License (CDDL) v1.0
# - Common Public License Version 1.0
# - ICU License
# - MIT License
# - MIT license
# - The Apache Software License, Version 2.0
# - The BSD License
# - iCal4j - License
# - mstor License
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
#Wed Feb 15 19:06:46 CET 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.4=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
