==========================
Apache Olingo (Incubation)
==========================

Apache Olingo is a Java library and extensions around
the OData specification.

Apache Olingo supports the specification versions
 - OData 2.0 <http://www.odata.org/documentation/odata-v2-documentation/>

Building Apache Olingo
======================

You can build Apache Olingo like this:

    mvn clean install

You need Maven 3 with Java 6 (or higher) for the build.
Set the environment variable MAVEN_OPTS to 
'-Xmx1024m -XX:MaxPermSize=256m' to give Maven more memory.

Documentation
=============

The project documentation is available here:

http://olingo.incubator.apache.org/documentation.html

License (see also package specific LICENSE files)
=================================================

Collective work: Copyright 2013 The Apache Software Foundation.

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.

Dependencies with "Weak Copyleft" or dual licenses
==================================================

Apache Olingo uses some libraries with open source licenses that require reciprocal
licensing when modified. These libraries are included in unmodified binary
form and can be redistributed under terms that are compatible with the
Apache License.

Some libraries used by Apache Olingo are dual-licensed under different open source
licenses. These libraries are redistributed under the license whose terms
are compatible with the Apache License.

See LICENSE file included in all Apache Olingo packages for 
full licensing details.


