# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
# - Apache License, Version 2.0 and
#        Common Development And Distribution License (CDDL) Version 1.0
# - BSD License
# - BSD style
# - Bouncy Castle Licence
# - CDDL + GPLv2 with classpath exception
# - CDDL 1.1
# - CDDL+GPL License
# - CDDL/GPLv2+CE
# - CPL
# - Common Development and Distribution License (CDDL) v1.0
# - Eclipse Public License 1.0
# - GNU Lesser General Public License
# - GPL2 w/ CPE
# - Indiana University Extreme! Lab Software License, vesion 1.1.1
# - MIT License
# - MIT X11 License
# - Mozilla Public License 1.1 (MPL 1.1)
# - New BSD License
# - Public Domain
# - The Apache Software License, Version 2.0
# - The PostgreSQL License
# - http://asm.ow2.org/license.html
# - iCal4j - License
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
#Wed May 25 17:55:38 NOVT 2016
dom4j--dom4j--1.6.1=BSD License
log4j--log4j--1.2.8=The Apache Software License, Version 2.0
stax--stax--1.2.0=The Apache Software License, Version 2.0
xalan--xalan--2.7.0=The Apache Software License, Version 2.0
