# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
# - Apache License
# - Apache License 2.0
# - Apache License Version 2.0
# - Apache License, Version 2.0
# - Apache Software License - Version 2.0
# - BSD License
# - COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
#										(CDDL)
#										Version
#										1.0
# - Commercial Vaadin Add-On License version 3.0
# - Common Development and Distribution license - v1.0.1
# - Eclipse Public License - Version 1.0
# - Eclipse Public License v1.0
# - GNU LGPL 3
# - GNU Lesser General Public License
# - ICU License
# - Indiana University Extreme! Lab Software
#										License,
#										vesion 1.1.1
# - Lesser General Public License (LGPL)
# - Lesser General Public License (LPGL)
# - Lesser General Public License (LPGL) v 2.1
# - MIT License
# - The Apache Software License, Version 2.0
# - The MIT License
# - The SAX License
# - The W3C License
# - The W3C Software License
# - W3C Software Copyright Notice and License
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
#Thu Aug 28 14:08:37 CEST 2014
ant--ant-launcher--1.6.5=Apache License Version 2.0
commons-collections--commons-collections--3.1=Apache License Version 2.0
javax.servlet--servlet-api--2.5=Common Development and Distribution license - v1.0.1
org.jdesktop--swing-worker--1.1=Lesser General Public License (LGPL)
