=========================
Apache Chemistry OpenCMIS
=========================

OpenCMIS is a collection of Java libraries, frameworks and tools around
the CMIS (Content Management Interoperability Services) specification.

OpenCMIS supports the specification versions
 - CMIS 1.0 <http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis-spec-v1.0.html>
 - CMIS 1.1 <http://docs.oasis-open.org/cmis/CMIS/v1.1/CMIS-v1.1.html>


Building OpenCMIS
=================

You can build OpenCMIS 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.

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

Collective work: Copyright 2010-2015 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
==================================================

OpenCMIS 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 OpenCMIS 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 Chemistry OpenCMIS packages for 
full licensing details.

