  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
  
  http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.  
  
    
app-1.0.0-v20070423.jar
  org.eclipse.equinox groupId;
  no notice file;
  about.html indicates its under EPL http://www.eclipse.org/legal/epl-v10.html
    and includes OSGi Materials licensed under the Apache v2 license
  about directory has a LICENSE file holding Apache v2 license
  
common-2.3.0-v200706262000.jar
  groupId: org.eclipse.emf
  no notice file;
  about.html indicates its under EPL http://www.eclipse.org/legal/epl-v10.html
  
common-3.3.0-v20070426.jar
  groupId: org.eclipse.equinox
  no notice file;
  about.html indicates its under EPL http://www.eclipse.org/legal/epl-v10.html
  
commons-jxpath-1.3.jar
  groupId: commons-jxpath
  Notice file is standard minimal Apache Notice file
  LICENSE is standard Apache v2
    
contenttype-3.2.100-v20070319.jar
  groupId: org.eclipse.core
  no notice file;
  about.html indicates its under EPL http://www.eclipse.org/legal/epl-v10.html
  
ecore-2.3.0-v200706262000.jar
  groupId: org.eclipse.emf
  no notice file;
  about.html indicates its under EPL http://www.eclipse.org/legal/epl-v10.html
    and includes Apache XML4J 4.3 derivative works 

jobs-3.3.0-v20070423.jar
  groupId: org.eclipse.core
  no notice file;
  about.html indicates its under EPL http://www.eclipse.org/legal/epl-v10.html
  
osgi-3.3.0-v20070530.jar
  groupId: org.eclipse
  no notice file;
  about.html indicates its under EPL http://www.eclipse.org/legal/epl-v10.html
    and includes OSGi Materials licensed under the Apache v2 license
  about directory has a LICENSE file holding Apache v2 license

preferences-3.2.100-v20070522.jar
  groupId: org.eclipse.equinox
  no notice file;
  about.html indicates its under EPL http://www.eclipse.org/legal/epl-v10.html
    and includes OSGi Materials licensed under the Apache v2 license
  about directory has a LICENSE file holding Apache v2 license

registry-3.3.0-v20070522.jar
  groupId: org.eclipse.equinox
  NOTICE file holding a standard minimal Apache Notice file;
  about.html indicates its under EPL http://www.eclipse.org/legal/epl-v10.html
    and includes Jakarta Commons Collection licensed under the Apache v2 license
  about directory has a LICENSE file holding Apache v2 license
    and a NOTICE file holding a standard minimal Apache Notice file

runtime-3.3.100-v20070530.jar
  groupId: org.eclipse.core
  no notice file;
  about.html indicates its under EPL http://www.eclipse.org/legal/epl-v10.html
  
xmi-2.3.0-v200706262000.jar
  groupId: org.eclipse.emf
  no notice file;
  about.html indicates its under EPL http://www.eclipse.org/legal/epl-v10.html

xmlbeans-2.4.0.jar
  groupId: org.apache.xmlbeans
  Notice File has several notices in it, but nothing that states the notices
    need to be copied to a project which includes it.
  License: Apache v2
  xmlbeans depends on stax:stax-api
  
 
  stax:stax-api dependency replaced with
  org.apache.geronimo.specs:geronimo-stax-api_1.0_spec
  version 1.0.1  
  see https://issues.apache.org/jira/browse/LEGAL-42

  







































