[![Build Status](https://travis-ci.org/apache/jackrabbit-filevault-package-maven-plugin.svg?branch=trunk)](https://travis-ci.org/apache/jackrabbit-filevault-package-maven-plugin)

Welcome to Apache Jackrabbit FileVault Package Maven Plugin
===========================================================

The Apache Jackrabbit FileVault package maven plugin is an Apache maven plugin 
that simplifies the creation of content package maven artifacts. The content 
packages can later be used to install content into a JCR repository using the 
Apache Jackrabbit FileVault packaging runtime.

Apache Jackrabbit FileVault is a project of the Apache Software Foundation.

Documentation
=============
Please refer to the plugin documentation at 
http://jackrabbit.apache.org/filevault-package-maven-plugin/index.html


Building the FileVault Package Maven Plugin
===========================================

You can build the plugin like this:

    mvn clean install

You need Maven 3.3.9 (or higher) with Java 8 (or higher) for the build.
For more instructions, please see the documentation at:

   http://jackrabbit.apache.org/building-jackrabbit.html

License (see also LICENSE)
==============================

```
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.
```

Mailing Lists
=============

To get involved with the Apache Jackrabbit project, start by having a
look at our website and joining our mailing lists. For more details about
Jackrabbit mailing lists as well as links to list archives, please see:

   http://jackrabbit.apache.org/mailing-lists.html

Latest development
==================

The latest FileVault package plugin source code is available via Subversion at

   https://svn.apache.org/repos/asf/jackrabbit/commons/filevault-package-maven-plugin/trunk/

or with ViewVC at

   https://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/

To checkout the main source tree, run

   svn checkout https://svn.apache.org/repos/asf/commons/filevault-package-maven-plugin/trunk filevault-package-maven-plugin

Credits
=======

See http://jackrabbit.apache.org/jackrabbit-team.html for the list of
Jackrabbit committers and main contributors.
