--------------------------------------------------------------------------
 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.
 
 $Id$
--------------------------------------------------------------------------

This is the parent for Turbine-Core, Site and most of Fulcrum components. 

USAGE

- Parent module to align dependencies in Fulcrum nand Turbine

- Based on last released commons parent versions

- cft. http://svn.apache.org/repos/asf/commons/proper/commons-parent/trunk

CAVEAT

- Check turbine-parent-assembly module dependency, which overwrites Apache module (still needed, 2017)

RELEASE

- Normally, this module could be released lazily.

- Java 8: include explicitely cobertura if needed: mvn clean site install -Papache-release,cobertura
