Migrate Cave documentation to asciidoc
diff --git a/manual/pom.xml b/manual/pom.xml
index 6b56fce..8cfce30 100644
--- a/manual/pom.xml
+++ b/manual/pom.xml
@@ -31,104 +31,12 @@
     <groupId>org.apache.karaf.cave</groupId>
     <artifactId>manual</artifactId>
     <name>Apache Karaf :: Cave :: Manual</name>
-    <packaging>war</packaging>
-
-    <properties>
-        <manual.dir>${project.build.directory}/manual</manual.dir>
-        <manual>${manual.dir}/cave-manual-${project.version}</manual>
-        <scala.version>2.8.1</scala.version>
-        <scalate.version>1.3.2</scalate.version>
-        <cave.version>${project.version}</cave.version>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.fusesource.scalate</groupId>
-            <artifactId>scalate-wikitext</artifactId>
-            <version>${scalate.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.scala-lang</groupId>
-            <artifactId>scala-library</artifactId>
-            <version>${scala.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.scala-lang</groupId>
-            <artifactId>scala-compiler</artifactId>
-            <version>${scala.version}</version>
-        </dependency>
-    </dependencies>
+    <packaging>pom</packaging>
 
     <build>
         <plugins>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-resources-plugin</artifactId>
-                <configuration>
-                    <useDefaultDelimiters>false</useDefaultDelimiters>
-                    <delimiters>
-                        <delimiter>${*}</delimiter>
-                    </delimiters>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>filter</id>
-                        <phase>generate-resources</phase>
-                        <goals>
-                            <goal>copy-resources</goal>
-                        </goals>
-                        <configuration>
-                            <outputDirectory>${project.build.directory}/webapp</outputDirectory>
-                            <resources>
-                                <resource>
-                                    <directory>src/main/webapp</directory>
-                                    <filtering>true</filtering>
-                                </resource>
-                            </resources>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <!-- TODO: add generate-command-help goal of karaf-maven-plugin -->
-            <plugin>
-                <groupId>org.fusesource.scalate</groupId>
-                <artifactId>maven-scalate-plugin</artifactId>
-                <version>${scalate.version}</version>
-                <executions>
-                    <execution>
-                        <id>generate-htmls</id>
-                        <phase>prepare-package</phase>
-                        <goals>
-                            <goal>sitegen-no-fork</goal>
-                        </goals>
-                        <configuration>
-                            <warSourceDirectory>${project.build.directory}/webapp</warSourceDirectory>
-                        </configuration>
-                    </execution>
-                </executions>
-                <configuration>
-                    <remoteServerId>people.apache.org</remoteServerId>
-                    <remoteServerUrl>scp://people.apache.org//x1/www/karaf.apache.org/manual/cave/${cave.version}</remoteServerUrl>
-                </configuration>
-                <dependencies>
-                    <dependency>
-                        <groupId>org.apache.maven.wagon</groupId>
-                        <artifactId>wagon-ssh</artifactId>
-                        <version>1.0-beta-7</version>
-                    </dependency>
-                    <dependency>
-                        <groupId>org.fusesource.wikitext</groupId>
-                        <artifactId>confluence-core</artifactId>
-                        <version>1.3</version>
-                    </dependency>
-                </dependencies>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-antrun-plugin</artifactId>
                 <version>1.6</version>
                 <executions>
@@ -140,93 +48,56 @@
                         </goals>
                         <configuration>
                             <tasks>
-                                <mkdir dir="${manual.dir}"/>
-                                <move file="${project.build.directory}/sitegen/manual.html" tofile="${manual}.html"/>
+                                <mkdir dir="target"/>
+                                <move file="${project.build.directory}/generated-docs/index.html" tofile="target/documentation.html"/>
                                 <echo message="Generating PDF using Prince XML (http://www.princexml.com/)"/>
                                 <exec executable="prince">
-                                    <arg value="${manual}.html"/>
-                                    <arg value="${manual}.pdf"/>
+                                    <arg value="target/documentation.html"/>
+                                    <arg value="target/documentation.pdf"/>
                                     <arg value="--log"/>
                                     <arg value="${project.build.directory}/prince.log"/>
                                 </exec>
-                                <attachartifact file="${manual}.html" type="html"/>
-                                <attachartifact file="${manual}.pdf" type="pdf"/>
+                                <attachartifact file="target/documentation.html" type="html"/>
+                                <attachartifact file="target/documentation.pdf" type="pdf"/>
                             </tasks>
                         </configuration>
                     </execution>
                 </executions>
             </plugin>
             <plugin>
-                <artifactId>maven-war-plugin</artifactId>
-                <version>2.1</version>
-                <configuration>
-                    <webResources>
-                        <resource>
-                            <directory>${project.build.directory}/webapp/</directory>
-                        </resource>
-                    </webResources>
-                    <archive>
-                        <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
-                    </archive>
-                </configuration>
-            </plugin>
-            <plugin>
                 <groupId>org.mortbay.jetty</groupId>
                 <artifactId>jetty-maven-plugin</artifactId>
                 <version>7.1.5.v20100705</version>
                 <configuration>
-                    <webAppSourceDirectory>${project.build.directory}/webapp/</webAppSourceDirectory>
-                    <systemProperties>
-                        <systemProperty>
-                            <name>scalate.editor</name>
-                            <value>${env.SCALATE_EDITOR}</value>
-                        </systemProperty>
-                        <systemProperty>
-                            <name>scalate.workdir</name>
-                            <value>${project.build.directory}/scalateWorkDir</value>
-                        </systemProperty>
-                        <systemProperty>
-                            <name>scalate.mode</name>
-                            <value>production</value>
-                        </systemProperty>
-                    </systemProperties>
+                    <webAppSourceDirectory>${project.build.directory}/generated-docs/</webAppSourceDirectory>
                 </configuration>
             </plugin>
             <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
+                <groupId>org.asciidoctor</groupId>
+                <artifactId>asciidoctor-maven-plugin</artifactId>
+                <version>1.5.2</version>
                 <executions>
                     <execution>
-                        <id>bundle-manifest</id>
-                        <phase>process-classes</phase>
+                        <id>output-html</id>
+                        <phase>generate-resources</phase>
                         <goals>
-                            <goal>manifest</goal>
+                            <goal>process-asciidoc</goal>
                         </goals>
+                        <configuration>
+                            <sourceHighlighter>coderay</sourceHighlighter>
+                            <backend>html5</backend>
+                            <attributes>
+                                <toc/>
+                                <linkcss>false</linkcss>
+                                <doctype>book</doctype>
+                            </attributes>
+                        </configuration>
                     </execution>
                 </executions>
                 <configuration>
-                    <supportedProjectTypes>
-                        <supportedProjectType>jar</supportedProjectType>
-                        <supportedProjectType>bundle</supportedProjectType>
-                        <supportedProjectType>war</supportedProjectType>
-                    </supportedProjectTypes>
-                    <instructions>
-                        <Import-Package>
-                            javax.servlet,
-                            javax.servlet.http,
-                            org.osgi.framework,
-                            org.osgi.service.packageadmin,
-                            javax.swing.tree,
-                            org.apache.commons.logging;provider=paxlogging;resolution:=optional,
-                            org.apache.log4j;provider=paxlogging;resolution:=optional,
-                            org.slf4j;provider=paxlogging;resolution:=optional;version="[1.5,2)",
-                        </Import-Package>
-                        <Bundle-ClassPath>.,WEB-INF/classes</Bundle-ClassPath>
-                        <Embed-Directory>WEB-INF/lib</Embed-Directory>
-                        <Embed-Dependencies>*;scope=compile|runtime</Embed-Dependencies>
-                        <Embed-Transitive>true</Embed-Transitive>
-                        <WebApp-Context>/cave-doc</WebApp-Context>
-                    </instructions>
+                    <sourceDirectory>src/main/asciidoc</sourceDirectory>
+                    <headerFooter>true</headerFooter>
+                    <imagesDir>../resources/images</imagesDir>
                 </configuration>
             </plugin>
             <plugin>
@@ -234,22 +105,12 @@
                 <artifactId>maven-scm-publish-plugin</artifactId>
                 <version>1.0-beta-2</version>
                 <configuration>
-                    <checkinComment>[scm-publish] Updating main site with Karaf Cave manual</checkinComment>
+                    <checkinComment>[scm-publish] Updating main site with Karaf Cave documentation</checkinComment>
                     <pubScmUrl>scm:svn:https://svn.apache.org/repos/asf/karaf/site/production/manual/cave/latest-4</pubScmUrl>
-                    <content>${project.build.directory}/sitegen</content>
+                    <content>${project.build.directory}/generated-docs</content>
                 </configuration>
             </plugin>
         </plugins>
     </build>
 
-    <reporting>
-        <plugins>
-            <plugin>
-                <groupId>org.fusesource.scalate</groupId>
-                <artifactId>maven-scalate-plugin</artifactId>
-                <version>${scalate.version}</version>
-            </plugin>
-        </plugins>
-    </reporting>
-
 </project>
diff --git a/manual/src/main/asciidoc/index.adoc b/manual/src/main/asciidoc/index.adoc
new file mode 100644
index 0000000..f83532b
--- /dev/null
+++ b/manual/src/main/asciidoc/index.adoc
@@ -0,0 +1,41 @@
+//
+// Licensed 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.
+//
+
+Apache Karaf Cave 4.x - Documentation
+======================================
+Apache Software Foundation
+:doctype: book
+:toc: left
+:toclevels: 3
+:toc-position: left
+:toc-title: Apache Karaf Cave 4.x - Documentation
+:numbered:
+
+include::overview.adoc[]
+
+= User Guide
+
+include::user-guide/installation.adoc[]
+
+include::user-guide/cave-repository.adoc[]
+
+include::user-guide/populate-repository.adoc[]
+
+include::user-guide/proxy-repository.adoc[]
+
+include::user-guide/http-wrapper.adoc[]
+
+include::user-guide/maven-wrapper.adoc[]
+
+include::user-guide/administrate-cave.adoc[]
diff --git a/manual/src/main/webapp/overview.conf b/manual/src/main/asciidoc/overview.adoc
similarity index 75%
rename from manual/src/main/webapp/overview.conf
rename to manual/src/main/asciidoc/overview.adoc
index 5f46116..957d7e7 100644
--- a/manual/src/main/webapp/overview.conf
+++ b/manual/src/main/asciidoc/overview.adoc
@@ -1,4 +1,18 @@
-h1. Apache Karaf Cave overview
+//
+// Licensed 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.
+//
+
+= Overview
 
 Apache Karaf Cave is an Apache Karaf sub-project.
 
@@ -26,4 +40,4 @@
 Karaf Cave provides two components:
 
 * the cave-server is the full OSGi repository service, including the storage, the management layer, the REST service layer, etc.
-* the cave-client is a local repository service proxy that use a remote Cave server (not yet available).
\ No newline at end of file
+* the cave-client is a local repository service proxy that use a remote Cave server (not yet available).
diff --git a/manual/src/main/asciidoc/user-guide/administrate-cave.adoc b/manual/src/main/asciidoc/user-guide/administrate-cave.adoc
new file mode 100644
index 0000000..92663b6
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/administrate-cave.adoc
@@ -0,0 +1,54 @@
+//
+// Licensed 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.
+//
+
+== Administration
+
+=== JMX
+
+When you install Apache Karaf Cave server, it provides a CaveServerMBean.
+
+This MBean uses the following object name:
+
+----
+org.apache.karaf.cave:type=repository,name=*
+----
+
+Thanks to this MBean, using any JMX client (like jconsole for instance), you can do all actions as you can using the 'cave:*' commands:
+
+* void createRepository(String name, String location, boolean generate, boolean install) throws Exception;
+* void destroyRepository(String name) throws Exception;
+* void installRepository(String name) throws Exception;
+* void uninstallRepository(String name) throws Exception;
+* void populateRepository(String name, String url, boolean generate, String filter) throws Exception;
+* void proxyRepository(String name, String url, boolean generate, String filter) throws Exception;
+* void updateRepository(String name) throws Exception;
+* void uploadArtifact(String repository, String artifactUrl, boolean generate) throws Exception;
+
+=== REST
+
+Cave provides a complete REST API to manipulate the repositories.
+
+The API is available on:
+
+----
+http://localhost:8181/cave/rest
+----
+
+NB: 8181 is the default port of the Apache Karaf HTTP service.
+
+You can get the WADL:
+
+----
+http://localhost:8181/cave/rest?_wadl
+----
diff --git a/manual/src/main/asciidoc/user-guide/cave-repository.adoc b/manual/src/main/asciidoc/user-guide/cave-repository.adoc
new file mode 100644
index 0000000..f4a4448
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/cave-repository.adoc
@@ -0,0 +1,100 @@
+//
+// Licensed 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.
+//
+
+== Repository
+
+A Cave repository is a container for:
+
+* Artifacts (files)
+* Repository metadata
+
+By default, a repository uses a filesystem backend for the storage, the directory used is KARAF_BASE/cave.
+
+You can change the storage location in the 'etc/org.apache.karaf.cave.server.storage.cfg' configuration file:
+
+----
+################################################################################
+#
+#    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.
+#
+################################################################################
+
+#
+# Storage location where Apache Karaf Cave create repositories by default
+#
+cave.storage.location=cave
+----
+
+For instance, you can define '/var/cave/store' for the 'storage.location' property.
+
+=== Create
+
+The 'cave:repository-create' command creates a new repository:
+
+----
+karaf@root()> cave:repository-create my-repository
+----
+
+A repository is identified by a name, 'my-repository' in our example.
+
+Apache Karaf Cave creates the repository storage for you.
+
+If you want to use an existing directory, and avoid Cave to create one in the storage location, you can use the '-l'
+('--location') option:
+
+----
+karaf@root()> cave:repository-create -l /home/user/.m2/repository m2
+----
+
+By default, Apache Karaf Cave scans the repository storage and create the repository metadata. You can use the '-no' ('--no-generate')
+option to avoid this step:
+
+----
+karaf@root()> cave:repository-create -no -l /home/user/.m2/repository m2
+----
+
+By default, Apache Karaf Cave registers (installs) a new repository into the repository service. You can use the '-ns' ('--no-start')
+option to avoid this step:
+
+----
+karaf@root()> cave:repository-create -ns -l /home/user/m2/repository m2
+----
+
+NB: the '-no' and '-ni' options are interesting when you use an existing location for the repository. If you create a
+new empty repository, these options don't have really any effect.
+
+=== List
+
+You can list the repositories:
+
+----
+karaf@root()> cave:repositories
+Name          | Location
+----------------------------------------------------------------
+my-repository | /opt/apache-karaf-4.0.0/data/cave/my-repository
+----
+
diff --git a/manual/src/main/asciidoc/user-guide/http-wrapper.adoc b/manual/src/main/asciidoc/user-guide/http-wrapper.adoc
new file mode 100644
index 0000000..a708c96
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/http-wrapper.adoc
@@ -0,0 +1,46 @@
+//
+// Licensed 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.
+//
+
+== HTTP wrapper service
+
+When you install the Apache Karaf Cave Server, it starts a HTTP service wrapper.
+
+It means that all artifacts and repository metadata presents in local repositories are exposed over HTTP.
+
+=== Repository metadata access
+
+Assuming that you have the following repositories:
+
+----
+karaf@root()> cave:repositories
+Name          | Location
+-----------------------------------------------------------------------------
+my-repository | /opt/apache-karaf-4.0.0/data/cave/my-repository
+----
+
+You can access the repository metadata using the following URL in your favorite browser:
+
+----
+http://localhost:8181/cave/http/my-repository-repository.xml
+----
+
+NB: the port 8181 is the default one of the Apache Karaf HTTP service.
+
+You can see that the URL follows the format:
+
+----
+http://[cave_server_hostname]:[http_service_port]/cave/http/[cave_repository_name]-repository.xml
+----
+
+It means that you can register the repositories on remote Apache Karaf instances.
diff --git a/manual/src/main/webapp/user-guide/installation.conf b/manual/src/main/asciidoc/user-guide/installation.adoc
similarity index 73%
rename from manual/src/main/webapp/user-guide/installation.conf
rename to manual/src/main/asciidoc/user-guide/installation.adoc
index 0f84b28..5062010 100644
--- a/manual/src/main/webapp/user-guide/installation.conf
+++ b/manual/src/main/asciidoc/user-guide/installation.adoc
@@ -1,8 +1,22 @@
-h1. Installation
+//
+// Licensed 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.
+//
+
+== Installation
 
 This chapter describes how to install Apache Karaf Cave into an existing Apache Karaf instance.
 
-h2. Pre-installation requirements
+=== Pre-installation requirements
 
 As Apache Karaf Cave is a Apache Karaf sub-project, it has to be installed into a running Apache Karaf instance.
 
@@ -11,33 +25,33 @@
 
 Apache Karaf Cave 4.0.x is designed to work on Apache Karaf 4.0.x.
 
-h2. Registration of the Apache Karaf Cave features
+=== Registration of the Apache Karaf Cave features
 
 Simply register the Apache Karaf Cave features URL in your Apache Karaf instance:
 
-{code}
+----
 karaf@root()> feature:repo-add cave 4.0.0
 Adding feature url mvn:org.apache.karaf.cave/apache-karaf-cave/4.0.0/xml/features
-{code}
+----
 
 Now Apache Karaf Cave features are available, ready to be installed:
 
-{code}
+----
 karaf@root()> feature:list|grep -i cave
 cave-server                     | 4.0.0                   |          | Uninstalled | karaf-cave-4.0.0 |
 cave-storage                    | 4.0.0                   |          | Uninstalled | karaf-cave-4.0.0 |
 cave-http                       | 4.0.0                   |          | Uninstalled | karaf-cave-4.0.0 |
 cave-rest                       | 4.0.0                   |          | Uninstalled | karaf-cave-4.0.0 |
 cave-maven                      | 4.0.0                   |          | Uninstalled | karaf-cave-4.0.0 |
-{code}
+----
 
 h3. Starting Apache Karaf Cave Server
 
-The Apache Karaf Cave Server is installed by the {{cave-server}} feature:
+The Apache Karaf Cave Server is installed by the 'cave-server' feature:
 
-{code}
+----
 karaf@root()> feature:install cave-server
-{code}
+----
 
 The cave-server feature is a meta-feature which actually installs:
 * cave-storage feature providing the Cave filesystem default storage.
@@ -47,9 +61,9 @@
 
 After the installation of the cave-server feature, new commands are available:
 
-{code}
+----
 karaf@root()> cave:<TAB>
 cave:repositories            cave:repository-create       cave:repository-destroy
 cave:repository-install      cave:repository-populate     cave:repository-proxy
 cave:repository-uninstall    cave:repository-update       cave:repository-upload
-{code}
+----
diff --git a/manual/src/main/webapp/user-guide/maven-wrapper.conf b/manual/src/main/asciidoc/user-guide/maven-wrapper.adoc
similarity index 62%
rename from manual/src/main/webapp/user-guide/maven-wrapper.conf
rename to manual/src/main/asciidoc/user-guide/maven-wrapper.adoc
index d411eab..957b305 100644
--- a/manual/src/main/webapp/user-guide/maven-wrapper.conf
+++ b/manual/src/main/asciidoc/user-guide/maven-wrapper.adoc
@@ -1,4 +1,18 @@
-h1. Maven wrapper service
+//
+// Licensed 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.
+//
+
+== Maven wrapper service
 
 When you install the Apache Karaf Cave Server, it starts a Maven service wrapper.
 
@@ -9,29 +23,29 @@
 
 For instance, we have the following Cave repository:
 
-{code}
+----
 karaf@root()> cave:repositories
 Name          | Location
 ----------------------------------------------------------------
 my-repository | /opt/apache-karaf-4.0.0/data/cave/my-repository
-{code}
+----
 
 You can access the corresponding Maven repository using:
 
-{code}
+----
 http://localhost:8181/cave/maven
-{code}
+----
 
 NB: the port 8181 is the default one of the Apache Karaf HTTP service.
 
 You can see that the URL follows the format:
 
-{code}
+----
 http://[cave_server_hostname]:[http_service_port]/cave/maven/
-{code}
+----
 
 For instance, if a Cave repository contains the commons-lang 2.6 artifact, it's accessible using:
 
-{code}
+----
 http://localhost:8181/cave/maven/commons-lang/commons-lang/2.6/commons-lang-2.6.jar
-{code}
+----
diff --git a/manual/src/main/webapp/user-guide/populate-repository.conf b/manual/src/main/asciidoc/user-guide/populate-repository.adoc
similarity index 64%
rename from manual/src/main/webapp/user-guide/populate-repository.conf
rename to manual/src/main/asciidoc/user-guide/populate-repository.adoc
index 2e1dc15..1fa62f7 100644
--- a/manual/src/main/webapp/user-guide/populate-repository.conf
+++ b/manual/src/main/asciidoc/user-guide/populate-repository.adoc
@@ -1,54 +1,66 @@
-h1. Populate repository
+//
+// Licensed 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.
+//
+
+== Populate repository
 
 You can add new artifacts in a repository.
 
-h2. Upload a single artifact
+=== Upload a single artifact
 
 You can upload a single artifact into a Cave Repository:
 
-{code}
+----
 karaf@root()> cave:repository-upload my-repository file:/home/user/.m2/repository/org/apache/servicemix/bundles/org.apache.servicemix.bundles.asm/3.3_2/org.apache.servicemix.bundles.asm-3.3_2.jar
 karaf@root()> cave:repository-upload my-repository http://svn.apache.org/repos/asf/servicemix/m2-repo/org/apache/qpid/qpid-broker/0.8.0/qpid-broker-0.8.0.jar
-{code}
+----
 
 You can also use Maven style URL:
 
-{code}
+----
 karaf@root()> cave:repository-upload my-repository mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/1.7.0_5
-{code}
+----
 
-h3. Populate from an external repository
+=== Populate from an external repository
 
 You can also make a kind of "bulk" population of your repository, using an external repository:
 
-{code}
+----
 karaf@root()> cave:repository-populate my-repository file:/home/user/.m2/repository
-{code}
+----
 
-Apache Karaf Cave supports {{file:}} but also {{http:}} URL. It means that Apache Karaf Cave is able to browse a remote repository and copy the artifacts
+Apache Karaf Cave supports 'file:' but also 'http:' URL. It means that Apache Karaf Cave is able to browse a remote repository and copy the artifacts
 in your "local" repository.
 
 For instance, you can populate your repository using all Ant ServiceMix bundles present on the Central Maven
 repository:
 
-{code}
+----
 karaf@root()> cave:repository-populate my-repository http://repo1.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.ant/
-{code}
+----
 
 You can also populate with the whole Central Maven Repository:
 
-{code}
+----
 karaf@root()> cave:repository-populate my-repository http://repo1.maven.org/maven2
-{code}
+----
 
-{warning}
 Maven Central repository is really huge and populating from the whole Maven Central Repository will take
 very very long time. It's just for demonstration purpose.
-{warning}
 
-You can filter the artifacts that you want to pick up to populate the repository. The {{cave:repository-populate}} command accepts
+You can filter the artifacts that you want to pick up to populate the repository. The 'cave:repository-populate' command accepts
 a regex option for the filter. For instance, to pick up only joda-time version 2 artifact, you can run:
 
-{code}
+----
 karaf@root()> cave:repository-populate --filter .*joda-time-2.* my-repository http://repo2.maven.org/maven2/joda-time/joda-time
-{code}
\ No newline at end of file
+----
diff --git a/manual/src/main/asciidoc/user-guide/proxy-repository.adoc b/manual/src/main/asciidoc/user-guide/proxy-repository.adoc
new file mode 100644
index 0000000..49b6040
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/proxy-repository.adoc
@@ -0,0 +1,35 @@
+//
+// Licensed 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.
+//
+
+== Proxy repository
+
+As you can populate repository, you can also proxy an "external" repository.
+
+It means that the artifacts stay on the remote repository, Apache Karaf Cave generates the repository metadata in the local repository
+for the remote artifacts:
+
+----
+karaf@root()> cave:repository-proxy my-repository http://repo1.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.commons-lang/
+----
+
+NB: the Cave repository will only handle the repository metadata, it doesn't monitor the remote repository. It means that you
+have to call the 'cave:proxy-repository' command each time the remote repository change (new artifacts, etc).
+
+NB: a best practice is to create a Cave repository dedicated for each proxied repository.
+
+The 'cave:repository-proxy' command accepts the filter option, as the 'cave:repository-populate' command:
+
+----
+karaf@root()> cave:repository-proxy --filter .*joda-time-2.* my-repository http://repo2.maven.org/maven2/joda-time/joda-time
+----
diff --git a/manual/src/main/asciidoc/user-guide/user-index.adoc b/manual/src/main/asciidoc/user-guide/user-index.adoc
new file mode 100644
index 0000000..6a33329
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/user-index.adoc
@@ -0,0 +1,35 @@
+//
+// Licensed 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.
+//
+
+Apache Karaf Cave 4.x - User Guide
+==================================
+:toc: left
+:toclevels: 3
+:toc-position: left
+:toc-title: Apache Karaf Cave 4.x - User Guide
+:numbered:
+
+include::user-guide/installation.adoc[]
+
+include::user-guide/cave-repository.adoc[]
+
+include::user-guide/populate-repository.adoc[]
+
+include::user-guide/proxy-repository.adoc[]
+
+include::user-guide/http-wrapper.adoc[]
+
+include::user-guide/maven-wrapper.adoc[]
+
+include::user-guide/administrate-cave.adoc[]
diff --git a/manual/src/main/webapp/WEB-INF/scalate/layouts/default.scaml b/manual/src/main/webapp/WEB-INF/scalate/layouts/default.scaml
deleted file mode 100644
index 4ac4cca..0000000
--- a/manual/src/main/webapp/WEB-INF/scalate/layouts/default.scaml
+++ /dev/null
@@ -1,116 +0,0 @@
--#
--# Copyright (C) 2009-2010 the original author or authors.
--# See the notice.md file distributed with this work for additional
--# information regarding copyright ownership.
--#
--# Licensed 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.
--#
-
--@ var body: String
--@ var title : String = "Apache Karaf Cave ${cave.version} Guides"
-- response.setContentType("text/html")
-
--# Only include the console if it's available and the engine is in dev mode.
-- val include_console = engine.isDevelopmentMode && engine.resourceLoader.exists("/org/fusesource/scalate/console/console_head.scaml")
-
-!!! Basic
-%html(lang="en")
-  %head
-    %meta(http-equiv="Content-Type" content="text/html; charset=utf-8")
-    %meta(name="description" content="description goes here")
-    %meta(name="keywords" content="keywords,goes,here")
-    %meta(name="author" content="The Apache Karaf Team")
-
-    - if (include_console)
-      = include("/org/fusesource/scalate/console/console_head.scaml")
-
-    %link(href={uri("/css/style.css")} rel="stylesheet" type="text/css")
-    %link(href={uri("/css/pygmentize.css")} rel="stylesheet" type="text/css")
-
-    - if (include_console)
-      %link(href={uri("/css/scalate/console.css")} rel="stylesheet" type="text/css")
-
-    %title
-      = title
-  
-  %body
-    %table{:width => "100%", :cellpadding => "0", :cellspacing => "0"}
-      %tr{:width => "100%"}
-        %td#cell-0-0{:colspan => "2"}
-          &nbsp;
-        %td#cell-0-1
-          &nbsp;
-        %td#cell-0-2{:colspan => "2"}
-          &nbsp;
-      %tr{:width => "100%"}
-        %td#cell-1-0
-          &nbsp;
-        %td#cell-1-1
-          &nbsp;
-        %td#cell-1-2
-          %div{:style => "padding: 5px;"}
-            #banner
-              = include("/_banner.ssp")
-            #top-menu
-              %table{:border => "0", :cellpadding => "1", :cellspacing => "0", :width => "100%"}
-                %tr
-                  %td
-                    %div{:align => "left"}
-                  %td
-                    %div{:align => "right"}
-                      = include("/_quicklinks.ssp")
-        %td#cell-1-3
-          &nbsp;
-        %td#cell-1-4
-          &nbsp;
-      %tr{:width => "100%"}
-        %td#cell-2-0{:colspan => "2"}
-          &nbsp;
-        %td#cell-2-1
-          %table
-            %tr{:height => "100%", :valign => "top"}
-              %td{:height => "100%"}
-                #wrapper-menu-page-right
-                  #wrapper-menu-page-top
-                    #wrapper-menu-page-bottom
-                      #menu-page
-                        = include("/_navigation.conf")
-              %td{:height =>"100%", :width => "100%"}
-                .wiki-content
-                  !~~ body
-        %td#cell-2-2{:colspan => "2"}
-          &nbsp;
-      %tr{:width => "100%"}
-        %td#cell-3-0
-          &nbsp;
-        %td#cell-3-1
-          &nbsp;
-        %td#cell-3-2
-          #footer
-            #site-footer
-              &copy; 2008-2011 The Apache Software Foundation
-              %br
-              Apache Karaf, Karaf, Apache, the Apache feather logo, and the Apache Karaf project logo are trademarks of The Apache Software Foundation.
-        %td#cell-3-3
-          &nbsp;
-        %td#cell-3-4
-          &nbsp;
-      %tr{:width => "100%"}
-        %td#cell-4-0{:colspan => "2"}
-          &nbsp;
-        %td#cell-4-1
-          &nbsp;
-        %td#cell-4-2{:colspan => "2"}
-          &nbsp;
-    - if (include_console)
-      = include("/org/fusesource/scalate/console/console.scaml")
diff --git a/manual/src/main/webapp/WEB-INF/scalate/layouts/print.ssp b/manual/src/main/webapp/WEB-INF/scalate/layouts/print.ssp
deleted file mode 100644
index d2c427f..0000000
--- a/manual/src/main/webapp/WEB-INF/scalate/layouts/print.ssp
+++ /dev/null
@@ -1,817 +0,0 @@
-<%--
-Copyright (C) 2009-2010 the original author or authors.
-See the notice.md file distributed with this work for additional
-information regarding copyright ownership.
-
-Licensed 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.
---%>
-<%@ var body: String %>
-<%@ var title: String = "Apache Karaf Cave ${cave.version} Guides" %>
-<% escapeMarkup = false %>
-<!DOCTYPE html>
-<html>
-<head>
-  <style type="text/css">
-/*
-
-Copyright (c) 2005 Hakon Wium Lie and Bert Bos
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-*/
-html {
-  margin: 0; padding: 0;
-  font: 10pt/1.26 "Gill Sans", sans-serif;
-}
-
-h1, h2, h3, h4, h5, h6 {
-  font-family: "Gill Sans", sans-serif;
-  margin: 2em 0 0.5em 0;
-  page-break-after: avoid;
-}
-
-h1 {
-  font-size: 2.0em;
-  font-weight: 900;
-
-  margin: 0;
-  margin-left:-2cm;
-  margin-top:-1cm;
-  margin-bottom:1.5cm;
-  top: 0cm;
-  left: 0cm;
-  padding: 2cm;
-  padding-top: 0cm;
-  padding-bottom: 1cm;
-  background: #888;
-  border-bottom-right-radius: 2cm;
-  page-break-before: always;
-  page-break-inside: avoid;
-}
-
-@media screen, handheld {
-h1 {
-  margin-top:1cm;
-  background-image: url("chapter-rounded-bottom.png");
-  background-repeat: no-repeat;
-  background-position: bottom right;
-}
-div.page-reset > h1 {
-  margin-top:0cm;
-}
-}
-
-
-h2 {
-  font-size: 1.2em;
-  text-transform: uppercase;
-  font-weight: bold;
-}
-
-h3 {
-  font-size: 1em;
-  font-weight: bold;
-}
-
-q::before {
-  content: "\201C";
-}
-
-q::after {
-  content: "\201D";
-}
-
-p { margin: 0 }
-p + p { text-indent: 1.3em ; margin-top: 0.2em; }
-p.sidenote + p, p.caption, p.art { text-indent: 0 }
-
-p.author {
-  margin-top: 2em;
-  text-indent: 0;
-  text-align: right;
-}
-
-a { text-decoration: none; color: black }
-
-/* cross-references */
-
-a.pageref::after { content: " on page " target-counter(attr(href), page); }
-a.chapref::before { content: " Chapter " target-counter(attr(href), chapter) ", "; }
-a.figref { content: " Figure " target-counter(attr(href), figure); }
-a.tableref { content: " Table " target-counter(attr(href), figure); }
-a.listingref { content: " Listing " target-counter(attr(href), listing); }
-
-/* sidenotes */
-
-.sidenote {
-  float: left;
-  clear: left;
-  margin: 0 0 1em -41%;
-  width: 37%;
-  font-size: 0.9em;
-  font-style: normal;
-  text-indent: 0;
-  text-align: right;
-  page-break-inside: avoid;
-}
-
-/* sidebars */
-
-div.sidebar {
-  float: top-next;
-  margin: 1.2em 0 1.2em 0;
-  border: thin solid;
-  background: #CCC;
-  padding: 0.5em 1em;
-  page-break-inside: avoid;
-  column-count: 2;
-  column-gap: 1.5em;
-}
-
-div.sidebar h2 {
-  margin-top: 0;
-}
-
-/* frontpage */
-
-.title p{
-	font-size:22pt;
-  	font-family: "Gill Sans", sans-serif;
-  	text-align: center;
-}
-
-.copyright-section {
-	text-align: center;
-	font-size: 9pt;
-	page-break-after: always;
-	margin-top: 50pt;
-	margin-bottom: 20pt;
-}
-
-.toc-title {
-	font-size:18pt;
-  	font-family: "Gill Sans", sans-serif;
-  	text-align: left;
-  	margin-left:20pt;
-  	margin-bottom: 40pt;
-
-}
-
-/* figures, tables, and listings */
-
-div.confluenceTableSmall th.confluenceTh {
-  font-size: 11px;
-}
-
-div.confluenceTableSmall td.confluenceTd {
-  font-size: 7px;
-}
-
-div.figure {
-  margin: 1em 0;
-  counter-increment: figure;
-}
-
-div.figure .caption, div.table .caption {
-  font-size: 0.9em;
-  font-style: italic;
-}
-
-div.figure .caption::before {
-  content: "Figure " counter(figure) ". ";
-  font-weight: bold;
-  font-style: normal;
-}
-
-div.table .caption::before {
-  content: "Table " counter(table) ". ";
-  font-weight: bold;
-  font-style: normal;
-}
-
-div.table {
-  margin: 1em 0;
-  counter-increment: table;
-}
-
-div.table th {
-  text-align: left;
-}
-
-table th, table td {
-  text-align: left;
-  padding-right: 1em;
-  page-break-inside: avoid;
-}
-
-table th {
-  border-top: thin solid;
-  border-bottom: thin solid;
-  padding-top: 0.2em;
-  padding-bottom: 0.2em;
-}
-table td {
-  border-top: none;
-  border-bottom: thin dotted;
-  padding-top: 0.2em;
-  padding-bottom: 0.2em;
-}
-
-div.Scrollbar {
-	display: none;
-}
-
-
-/* Weird div.codeHeader a b::before would be a better selection
-   but prince does not properly match it.. Firefox does. */
-div.codeHeader::before {
-  content: "Listing " counter(listing) ". ";
-  font-weight: bold;
-  font-style: normal;
-}
-div.codeHeader a b {
-  font-style: italic;
-  font-weight: normal;
-}
-div.codeHeader {
-  font-size: 0.9em;
-  counter-increment: listing;
-}
-div.code {
-	border: 1px dashed #c0c0c0;
-    font-size: 12px;
-	font-family: Courier;
-    margin: 5px;
-	line-height: 13px;
-	padding: 3px;
-	background-color: #f8f8f8;
-
-}
-
-
-@page {
-  margin: 2cm;
-  size: 7in 9.25in;
-
-  @footnotes {
-    border-top: thin solid black;
-    padding-top: 0.3em;
-    margin-top: 0.6em;
-  }
-}
-
-
-/* define default page and names pages: cover, blank, frontmatter */
-div.page-reset {
-    counter-reset: page 1;
-}
-
-@page :left {
-  @top-left-corner {
-    font-weight: 900; font: 9pt "Gill Sans", serif;
-    content: counter(page);
-    text-align: left;
-    margin-left: 1cm;
-    visibility: hidden;
-  }
-  @top-left {
-    font-weight: 900;
-    font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
-    content: string(header, first);
-    visibility: hidden;
-  }
-  @bottom-left-corner {
-    font-weight: 900; font: 9pt "Gill Sans", serif;
-    content: counter(page);
-    text-align: left;
-    margin-left: 1cm;
-  }
-  @bottom-left {
-    font-weight: 900;
-    font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
-    content: string(header, first);
-  }
-}
-
-@page :right {
-  @top-right-corner {
-    font-weight: 900; font: 9pt "Gill Sans", serif;
-    content: counter(page);
-    text-align: left;
-    margin-left: 1cm;
-    visibility: hidden;
-  }
-  @top-right {
-    font-weight: 900;
-    font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
-    content: string(header, first)
-    visibility: hidden;
-  }
-  @bottom-right-corner {
-    font-weight: 900; font: 9pt "Gill Sans", serif;
-    content: counter(page);
-    text-align: right;
-    margin-right: 1cm;
-  }
-  @bottom-right {
-    font-weight: 900; font: 9pt "Gill Sans", serif;
-    white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
-    content: string(header, first)
-  }
-}
-
-/*
-  In theory we should be able to use the :first selector so taht
-  we can put the page numbering on the bottom of the first page of the chapter
-  but have the rest of the pages number at the top.  But this does not seem
-  to work.  See http://www.princexml.com/doc/6.0/page-selectors/
-
-  So for now just always number at the bottom :(
-*/
-/*
-div.chapter { page: bottom-number; }
-@page bottom-number :first {
-  @top-left {
-    visibility: hidden;
-  }
-  @bottom-left {
-    visibility: visible;
-  }
-  @top-right {
-    visibility: hidden;
-  }
-  @bottom-right {
-    visibility: visible;
-  }
-}
-*/
-
-@page cover { margin: 0; }
-
-@page frontmatter :left {
-  @bottom-left-corner {
-    content: counter(page, lower-roman);
-  }
-  @bottom-left-corner {
-    content: counter(page, lower-roman);
-  }
-}
-
-@page frontmatter :right {
-  @bottom-right-corner {
-    content: counter(page, lower-roman);
-  }
-  @bottom-right-corner {
-    content: counter(page, lower-roman);
-  }
-}
-
-@page blank :left {
-  @top-left { visibility: hidden; }
-  @bottom-left { visibility: hidden; }
-  @top-left-corner { visibility: hidden; }
-  @bottom-left-corner { visibility: hidden; }
-}
-
-@page blank :right {
-  @top-right { visibility: hidden; }
-  @bottom-right { visibility: hidden; }
-  @top-right-corner { visibility: hidden; }
-  @bottom-right-corner { visibility: hidden; }
-}
-
-/* footnotes */
-.footnote {
-  display: none;                   /* default rule */
-
-  display: prince-footnote;        /* prince-specific rules */
-  position: footnote;
-  footnote-style-position: inside;
-
-  counter-increment: footnote;
-  margin-left: 1.4em;
-  font-size: 90%;
-  line-height: 1.4;
-}
-
-.footnote::footnote-call {
-  vertical-align: super;
-  font-size: 80%;
-}
-
-.footnote::footnote-marker {
-  vertical-align: super;
-  color: green;
-  padding-right: 0.4em;
-}
-
-/* Confluence contents to hide */
-#labels-section {
-	display: none;
-}
-#comments-section {
-	display: none;
-}
-#footer {
-	display: none;
-}
-.hidden {
-	display: none;
-}
-
-/*
-   A book consists of different types of sections. We propose to use
-   DIV elements with these class names:
-
-    frontcover
-    halftitlepage: contains the title of the book
-    titlepage: contains the title of the book, name of author(s) and publisher
-    imprint: left page with copyright, publisher, library printing information
-    dedication: right page with short dedication
-    foreword: written by someone other than the author(s)
-    toc: table of contents
-    preface: preface, including acknowledgements
-    chapter: each chapter is given its own DIV element
-    references: contains list of references
-    appendix: each appendix is given its own
-    bibliography
-    glossary
-    index
-    colophon: describes how the book was produced
-    backcover
-
-   A book will use several of the types listed above, but few books
-   will use all of them.
-*/
-
-/* which section uses which named page */
-
-div.halftitlepage, div.titlepage, div.imprint, div.dedication { page: blank }
-div.foreword, div.toc, div.preface { page: frontmatter }
-
-
-/* page breaks */
-div.frontcover, div.halftitlepage, div.titlepage { page-break-before: right }
-div.imprint { page-break-before: always; }
-div.chapter { page-break-before: always; }
-div.dedication, div.foreword, div.toc, div.preface, div.reference,
-div.appendix, div.bibliography, div.glossary, div.index, div.colophon {
-  page-break-before: always
-}
-div.backcover { page-break-before: left }
-
-/* titlepage, halftitlepage */
-
-div.titlepage h1, div.halftitlepage h1 { margin-bottom: 2em; }
-div.titlepage h2, div.halftitlepage h2 { font-size: 1.2em; margin-bottom: 3em; }
-div.titlepage h3, div.halftitlepage h3 { font-size: 1em; margin-bottom: 3em; }
-div.titlepage p, div.halftitlepage p {
-  font-size: 1.4em;
-  font-weight: bold;
-  margin: 0; padding: 0;
-}
-
-
-/* TOC */
-
-ul.toc, ul.toc ul {
-  list-style-type: none;
-  margin: 0; padding: 0;
-  margin-left: 3cm;
-}
-ul.toc ul {
-  margin-left: 1em;
-  font-weight: normal;
-}
-ul.toc > li {
-  font-weight: bold;
-  margin-bottom: 0.5em;
-}
-ul.toc a::after {
-  content: leader('.') target-counter(attr(href), page);
-  font-style: normal;
-}
-ul.toc > li.frontmatter a::after {
-  content: leader('.') target-counter(attr(href), page, lower-roman);
-  font-style: normal;
-}
-ul.toc > li.endmatter a::after {
-  content: leader('.') target-counter(attr(href), page);
-  font-style: normal;
-}
-ul.toc > li.chapter::before {
-  content: "Chapter " counter(toc-chapter, decimal);
-  display: block;
-  margin: 1em 0 0.1em -2.5cm;
-  font-weight: normal;
-  counter-increment: toc-chapter;
-  page-break-after: avoid;
-}
-
-/* chapter numbers */
-
-div.chapter { counter-increment: chapter; }
-div.chapter h1::before {
-  text-transform: uppercase;
-  letter-spacing: 0.15em;
-  content: "Chapter  " counter(chapter) " \A\B0 \B0 \B0 \B0\A";
-  white-space: pre;
-  font-size: 50%;
-}
-
-div.frontcover h1::before, div.titlepage h1::before, div.halftitlepage h1::before {
-  content: normal; /* that is, none */
-}
-
-h1 { string-set: header content();}
-div.chapter h1 { string-set: header "Chapter " counter(chapter) " - " content(); }
-
-/* index */
-
-ul.index {
-  list-style-type: none;
-  margin: 0; padding: 0;
-  column-count: 2;
-  column-gap: 1em;
-}
-
-ul.index a::after { content: ", " target-counter(attr(href), page); }
-
-
-span.element, span.attribute {
-  text-transform: uppercase;
-  font-weight: bold;
-  font-size: 80%;
-}
-span.property { font-weight: bold }
-code, span.css, span.value, span.declaration {
-  font: 90% "Lucida Console", "Lucida Sans Typewriter", monospace;
-}
-
-
-@media screen, handheld {
-  html {font: 14px "Gill Sans", sans-serif; }
-  h1 { margin-bottom: 0.5em }
-  div.frontcover, div.halftitlepage, div.titlepage, div.imprint,
-  div.dedication, div.foreword, div.toc, div.index { display: none }
-  body {
-      margin: 0cm;
-      margin-left: 2cm;
-      margin-right: 2cm;
-  }
-}
-
-/*
- * Enhancements to the take advantage of some of the style markup that
- * Confluence generates
- */
-a sup img { visibility: hidden; position: absolute;}
-
-img {
-  prince-image-resolution:150dpi;
-}
-
-table {
-  font: "Lucida Console", "Lucida Sans Typewriter", monospace;
-}
-
-table td {
-  font-size: 10pt;
-}
-
-pre {
-   white-space: pre-wrap;
-}
-
-.codeContent {
-  font-size: 80%;
-}
-.code {
-}
-.code-keyword {
-  color: #000091;
-  background-color: inherit;
-}
-
-.code-object {
-  color: #910091;
-  background-color: inherit;
-}
-
-.code-quote {
-  color: #009100;
-  background-color: inherit;
-}
-
-.code-comment {
-  color: #808080;
-  background-color: inherit;
-}
-
-
-.code-xml .code-keyword {
-  color: inherit;
-  font-weight: bold;
-}
-
-.code-tag {
-  color: #000091;
-  background-color: inherit;
-}
-
-.noteMacro { border-color: #F0C000; background-color: #FFFFCE;}
-.warningMacro { border-color: #CC0000; background-color: #FFCCCC }
-.infoMacro { border-color: #3c78b5; background-color: #D8E4F1; }
-.tipMacro { border-color: #090; background-color: #dfd;}
-.noteMacro, .warningMacro, .infoMacro, .tipMacro, .informationMacroPadding {
-  border: thin solid;
-  float: top-next;
-  margin: 1em 0 1.2em 0;
-  padding: 0.5em;
-  column-count: 2;
-  column-gap: 1.5em;
-  width: 100%;
-}
-table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td {
-    border: none;
-}
-table.infoMacro p, table.warningMacro p, table.tipMacro p, table.noteMacro p, table.sectionMacro p {
-    font-size:x-small;
-    margin-top: 1em;
-}
-  </style>
-  <style type="text/css">
-.syntax .hll { background-color: #ffffcc }
-.syntax  { background: #f0f0f0; }
-.syntax .c { color: #60a0b0; font-style: italic } /* Comment */
-.syntax .err { border: 1px solid #FF0000 } /* Error */
-.syntax .k { color: #007020; font-weight: bold } /* Keyword */
-.syntax .o { color: #666666 } /* Operator */
-.syntax .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
-.syntax .cp { color: #007020 } /* Comment.Preproc */
-.syntax .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
-.syntax .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
-.syntax .gd { color: #A00000 } /* Generic.Deleted */
-.syntax .ge { font-style: italic } /* Generic.Emph */
-.syntax .gr { color: #FF0000 } /* Generic.Error */
-.syntax .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.syntax .gi { color: #00A000 } /* Generic.Inserted */
-.syntax .go { color: #808080 } /* Generic.Output */
-.syntax .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
-.syntax .gs { font-weight: bold } /* Generic.Strong */
-.syntax .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.syntax .gt { color: #0040D0 } /* Generic.Traceback */
-.syntax .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
-.syntax .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
-.syntax .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
-.syntax .kp { color: #007020 } /* Keyword.Pseudo */
-.syntax .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
-.syntax .kt { color: #902000 } /* Keyword.Type */
-.syntax .m { color: #40a070 } /* Literal.Number */
-.syntax .s { color: #4070a0 } /* Literal.String */
-.syntax .na { color: #4070a0 } /* Name.Attribute */
-.syntax .nb { color: #007020 } /* Name.Builtin */
-.syntax .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
-.syntax .no { color: #60add5 } /* Name.Constant */
-.syntax .nd { color: #555555; font-weight: bold } /* Name.Decorator */
-.syntax .ni { color: #d55537; font-weight: bold } /* Name.Entity */
-.syntax .ne { color: #007020 } /* Name.Exception */
-.syntax .nf { color: #06287e } /* Name.Function */
-.syntax .nl { color: #002070; font-weight: bold } /* Name.Label */
-.syntax .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
-.syntax .nt { color: #062873; font-weight: bold } /* Name.Tag */
-.syntax .nv { color: #bb60d5 } /* Name.Variable */
-.syntax .ow { color: #007020; font-weight: bold } /* Operator.Word */
-.syntax .w { color: #bbbbbb } /* Text.Whitespace */
-.syntax .mf { color: #40a070 } /* Literal.Number.Float */
-.syntax .mh { color: #40a070 } /* Literal.Number.Hex */
-.syntax .mi { color: #40a070 } /* Literal.Number.Integer */
-.syntax .mo { color: #40a070 } /* Literal.Number.Oct */
-.syntax .sb { color: #4070a0 } /* Literal.String.Backtick */
-.syntax .sc { color: #4070a0 } /* Literal.String.Char */
-.syntax .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
-.syntax .s2 { color: #4070a0 } /* Literal.String.Double */
-.syntax .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
-.syntax .sh { color: #4070a0 } /* Literal.String.Heredoc */
-.syntax .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
-.syntax .sx { color: #c65d09 } /* Literal.String.Other */
-.syntax .sr { color: #235388 } /* Literal.String.Regex */
-.syntax .s1 { color: #4070a0 } /* Literal.String.Single */
-.syntax .ss { color: #517918 } /* Literal.String.Symbol */
-.syntax .bp { color: #007020 } /* Name.Builtin.Pseudo */
-.syntax .vc { color: #bb60d5 } /* Name.Variable.Class */
-.syntax .vg { color: #bb60d5 } /* Name.Variable.Global */
-.syntax .vi { color: #bb60d5 } /* Name.Variable.Instance */
-.syntax .il { color: #40a070 } /* Literal.Number.Integer.Long */
-
-
-/* don't highlight errors */
-.syntax .err {
-  border: none;
-}
-
-.syntax {
-  font-size: .9em;
-  font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;
-  background-color: #F8F8FF;
-
-  overflow:auto;
-  -moz-background-clip:border;
-  -moz-background-inline-policy:continuous;
-  -moz-background-origin:padding;
-  margin: 1em 0 1em 0;
-  border:1px solid #DDDDDD;
-
-  border-top-left-radius: 8px; -webkit-border-top-left-radius: 8px; -moz-border-radius-topleft: 8px;
-  border-top-right-radius: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-topright: 8px;
-  border-style: solid;  border-width: 1px; border-color: #dedede !important;
-  padding: 1em;
-}
-.syntax .linenodiv  {
-  background-color:#ECECEC;
-  border-right:1px solid #DDDDDD;
-  color:#AAAAAA;
-  padding: .5em;
-  text-align:right;
-}
-.syntax .highlight  {
-}
-.syntax pre {
-  margin:0;
-}
-
-pre.syntax {
-  padding: .5em;
-  background-color: #F8F8FF; overflow:auto;
-}
-
-.syntax code {
-  font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;
-  font-size: 10pt;
-}
-
-div.compare { width: 700px; }
-div.compare div.compare-left { float:left; width:340px; padding:5px; margin-top: 15px; }
-div.compare div.compare-right { float:right; width:340px; padding:5px; margin-top: 15px; }
-div.compare div h3 {
-  margin-left: 15px;
-  padding: 5px 15px;
-  display: inline;
-  font-size: .8em;
-  color: #666;
-
-  border-top: 1px solid #ccc; -moz-border-top-colors: #ccc white white #e5e5e5;
-  border-left: 1px solid #ccc; -moz-border-left-colors: #ccc white white #e5e5e5;
-  border-right: 1px solid #ccc;-moz-border-right-colors: #ccc white white #e5e5e5;
-  border-top-left-radius: 8px; -webkit-border-top-left-radius: 8px;  -moz-border-radius-topleft: 8px;
-  border-top-right-radius: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-topright: 8px;
-}
-div.compare div div {
-  margin: 5px 0px 0px 0px;
-}
-.clear {
-  clear:both;
-}
-.wide div.compare div.compare-left { float:none; width:700px; }
-.wide div.compare div.compare-right { float:none; width:700px; }
-
-  </style>
-
-  <title>${title}</title>
-</head>
-<body>
-  <div id="titlepage">
-    <div id="title">Apache Karaf Cave</div>
-    <div id="subtitle">Version ${cave.version}</div>
-  </div>
-  <div id="main">
-    <%= body %>
-  </div>
-</body>
-</html>
diff --git a/manual/src/main/webapp/WEB-INF/web.xml b/manual/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 50a7f28..0000000
--- a/manual/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Copyright (C) 2009-2010 the original author or authors.
-    See the notice.md file distributed with this work for additional
-    information regarding copyright ownership.
-
-    Licensed 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.
-
--->
-
-<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
-        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
-        version="2.5">
-
-  <display-name>Apache Karaf Cave Documentation</display-name>
-
-  <description>
-    Apache Karaf Cave Documentation
-  </description>
-
-  <filter>
-    <filter-name>TemplateEngineFilter</filter-name>
-    <filter-class>org.fusesource.scalate.servlet.TemplateEngineFilter</filter-class>
-  </filter>
-  <filter-mapping>
-    <filter-name>TemplateEngineFilter</filter-name>
-    <url-pattern>/*</url-pattern>
-  </filter-mapping>
-
-  <welcome-file-list>
-    <welcome-file>index.conf</welcome-file>
-  </welcome-file-list>
-
-  <error-page>
-    <error-code>500</error-code>
-    <location>/WEB-INF/scalate/errors/500.scaml</location>
-  </error-page>
-</web-app>
diff --git a/manual/src/main/webapp/index.conf b/manual/src/main/webapp/index.conf
deleted file mode 100644
index 80a0d2d..0000000
--- a/manual/src/main/webapp/index.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-h1. Apache Karaf Cave
-
-This project contains documentation about Apache Karaf Cave.
-
-* [Overview|overview]
-* [User Guide|user-guide/index]
\ No newline at end of file
diff --git a/manual/src/main/webapp/manual.conf b/manual/src/main/webapp/manual.conf
deleted file mode 100644
index f65e5b9..0000000
--- a/manual/src/main/webapp/manual.conf
+++ /dev/null
@@ -1,38 +0,0 @@
-{attributes:layout=/WEB-INF/scalate/layouts/print.ssp}
-
-{div:class=title}
-\\
-\\
-\\
-\\
-Apache Karaf Cave
-User Guide
-\\
-\\
-\\
-\\
-{div}
-
-{div:class=copyright-section}
-Copyright 2015 The Apache Software Foundation
-
-The PDF format of the Karaf Manual has been generated by Prince XML (http://www.princexml.com).
-{div}
-
-{div:class=toc-title}
-Table of contents
-{div}
-
-{toc:maxLevel=2}
-
-h1. Overview
-{include:overview.conf}
-
-h1. User Guide
-{include:/user-guide/installation}
-{include:/user-guide/cave-repository}
-{include:/user-guide/populate-repository}
-{include:/user-guide/proxy-repository}
-{include:/user-guide/http-wrapper}
-{include:/user-guide/maven-wrapper}
-{include:/user-guide/administrate-cave}
diff --git a/manual/src/main/webapp/user-guide/administrate-cave.conf b/manual/src/main/webapp/user-guide/administrate-cave.conf
deleted file mode 100644
index f9a54aa..0000000
--- a/manual/src/main/webapp/user-guide/administrate-cave.conf
+++ /dev/null
@@ -1,42 +0,0 @@
-h1. Administration
-
-h2. JMX
-
-When you install Apache Karaf Cave server, it provides a new CaveServerMBean.
-
-This MBean use the following object name:
-
-{code}
-org.apache.karaf.cave:type=repository,name=*
-{code}
-
-Thanks to this MBean, using any JMX client (like jconsole for instance), you can do all actions as you can using the
-{{cave:*}} commands:
-
-* void createRepository(String name, String location, boolean generate, boolean install) throws Exception;
-* void destroyRepository(String name) throws Exception;
-* void installRepository(String name) throws Exception;
-* void uninstallRepository(String name) throws Exception;
-* void populateRepository(String name, String url, boolean generate, String filter) throws Exception;
-* void proxyRepository(String name, String url, boolean generate, String filter) throws Exception;
-* void updateRepository(String name) throws Exception;
-* void uploadArtifact(String repository, String artifactUrl, boolean generate) throws Exception;
-
-h2. REST
-
-Cave provides a complete REST API to manipulate the repositories.
-
-The API is available on:
-
-{code}
-http://localhost:8181/cave/rest
-{code}
-
-NB: 8181 is the default port of the Apache Karaf HTTP service.
-
-You can get the WADL:
-
-{code}
-http://localhost:8181/cave/rest?_wadl
-{code}
-
diff --git a/manual/src/main/webapp/user-guide/cave-repository.conf b/manual/src/main/webapp/user-guide/cave-repository.conf
deleted file mode 100644
index dc95f1c..0000000
--- a/manual/src/main/webapp/user-guide/cave-repository.conf
+++ /dev/null
@@ -1,107 +0,0 @@
-h1. Repository
-
-A Cave Repository is a container for:
-
-* Artifacts (files)
-* Repository metadata
-
-By default, a repository uses a filesystem backend for the storage, the directory used is KARAF_BASE/cave.
-
-You can change the storage location in the {{etc/org.apache.karaf.cave.server.storage.cfg}} configuration file:
-
-{code}
-################################################################################
-#
-#    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.
-#
-################################################################################
-
-#
-# Storage location where Apache Karaf Cave create repositories by default
-#
-cave.storage.location=cave
-{code}
-
-For instance, you can define {{/var/cave/store}} for the {{storage.location}} property.
-
-h2. Create
-
-The {{cave:repository-create}} command creates a new repository:
-
-{code}
-karaf@root()> cave:repository-create my-repository
-{code}
-
-A repository is identified by a name, {{my-repository}} in our example.
-
-Apache Karaf Cave creates the repository storage for you.
-
-If you want to use an existing directory, and avoid Cave to create one in the storage location, you can use the {{-l}}
-({{--location}}) option:
-
-{code}
-karaf@root()> cave:repository-create -l /home/user/.m2/repository m2
-{code}
-
-By default, Apache Karaf Cave scans the repository storage and create the repository metadata. You can use the {{-no}} ({{--no-generate}})
-option to avoid this step:
-
-{code}
-karaf@root()> cave:repository-create -no -l /home/user/.m2/repository m2
-{code}
-
-By default, Apache Karaf Cave registers (installs) a new repository into the repository service. You can use the {{-ns}} ({{--no-start}})
-option to avoid this step:
-
-{code}
-karaf@root()> cave:repository-create -ns -l /home/user/m2/repository m2
-{code}
-
-NB: the {{-no}} and {{-ni}} options are interesting when you use an existing location for the repository. If you create a
-new empty repository, these options don't have really any effect.
-
-h2. List
-
-You can list the repositories:
-
-{code}
-karaf@root()> cave:repositories
-Name          | Location
-----------------------------------------------------------------
-my-repository | /opt/apache-karaf-4.0.0/data/cave/my-repository
-{code}
-
-You can find the repository name and location.
-
-h2. Destroy
-
-The {{cave:repository-destroy}} command deletes the repository:
-
-{code}
-karaf@root()> cave:repository-destroy my-repository
-{code}
-
-The {{-s}} ({{--storage}}) also deletes the repository backend storage.
-
-{warning}
-Be aware that the {{-s}} option completely deletes the repository storage. By extremely careful when using this command
-with repository using "custom" location.
-{warning}
-
-h2. What's next
-
-Apache Karaf Cave provides a HTTP service to expose the repositories. It allows you to use the repositories remotely.
-You can find details in the [HTTP wrapper service section|http-wrapper] of the user guide.
diff --git a/manual/src/main/webapp/user-guide/http-wrapper.conf b/manual/src/main/webapp/user-guide/http-wrapper.conf
deleted file mode 100644
index 06d3811..0000000
--- a/manual/src/main/webapp/user-guide/http-wrapper.conf
+++ /dev/null
@@ -1,33 +0,0 @@
-h1. HTTP wrapper service
-
-When you install the Apache Karaf Cave Server, it starts a HTTP service wrapper.
-
-It means that all artifacts and repository metadata presents in local repositories are exposed over HTTP.
-
-h2. Repository metadata access
-
-Assuming that you have the following repositories:
-
-{code}
-karaf@root()> cave:repositories
-Name          | Location
------------------------------------------------------------------------------
-my-repository | /opt/apache-karaf-4.0.0/data/cave/my-repository
-
-{code}
-
-You can access the repository metadata using the following URL in your favorite browser:
-
-{code}
-http://localhost:8181/cave/http/my-repository-repository.xml
-{code}
-
-NB: the port 8181 is the default one of the Apache Karaf HTTP service.
-
-You can see that the URL follows the format:
-
-{code}
-http://[cave_server_hostname]:[http_service_port]/cave/http/[cave_repository_name]-repository.xml
-{code}
-
-It means that you can register the repositories on remote Apache Karaf instances.
diff --git a/manual/src/main/webapp/user-guide/index.conf b/manual/src/main/webapp/user-guide/index.conf
deleted file mode 100644
index 1ac33bc..0000000
--- a/manual/src/main/webapp/user-guide/index.conf
+++ /dev/null
@@ -1,9 +0,0 @@
-h1. Apache Karaf Cave User Guide
-
-* [Installation|installation]
-* [Repository|cave-repository]
-* [Populate repository|populate-repository]
-* [Proxy repository|proxy-repository]
-* [HTTP wrapper service|/user-guide/http-wrapper]
-* [Maven wrapper service|/user-guide/maven-wrapper]
-* [Administration|/user-guide/administrate-cave]
\ No newline at end of file
diff --git a/manual/src/main/webapp/user-guide/proxy-repository.conf b/manual/src/main/webapp/user-guide/proxy-repository.conf
deleted file mode 100644
index ae8445f..0000000
--- a/manual/src/main/webapp/user-guide/proxy-repository.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-h1. Proxy repository
-
-As you can [populate repository|populate-repository], you can also proxy an "external" repository.
-
-It means that the artifacts stay on the remote repository, Apache Karaf Cave generates the repository metadata in the local repository
-for the remote artifacts:
-
-{code}
-karaf@root()> cave:repository-proxy my-repository http://repo1.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.commons-lang/
-{code}
-
-NB: the Cave repository will only handle the repository metadata, it doesn't monitor the remote repository. It means that you
-have to call the {{cave:proxy-repository}} command each time the remote repository change (new artifacts, etc).
-
-NB: a best practice is to create a Cave repository dedicated for each proxied repository.
-
-The {{cave:repository-proxy}} command accepts the filter option, as the {{cave:repository-populate}} command:
-
-{code}
-karaf@root()> cave:repository-proxy --filter .*joda-time-2.* my-repository http://repo2.maven.org/maven2/joda-time/joda-time
-{code}
\ No newline at end of file