You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2015/12/24 14:21:11 UTC

[1/2] karaf-cave git commit: KARAF-3679 - Use asciidoc for Cave documentation

Repository: karaf-cave
Updated Branches:
  refs/heads/cave-3.x 4675cd403 -> 122506889


http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/user-guide/cave-repository.conf
----------------------------------------------------------------------
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 577083b..0000000
--- a/manual/src/main/webapp/user-guide/cave-repository.conf
+++ /dev/null
@@ -1,166 +0,0 @@
-h1. Repository
-
-A Cave Repository is a container for:
-
-* OSGi bundles (jar files)
-* OBR (OSGi Bundle Repository) metadata (aka a repository.xml file)
-
-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
-#
-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 OBR metadata. You can use the {{-no}} ({{--no-obr-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 OBR service. You can use the {{-ni}} ({{--no-install}})
-option to avoid this step:
-
-{code}
-karaf@root()> cave:repository-create -ni -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 using the {{cave:repositories}} command:
-
-{code}
-karaf@root()> cave:repositories
-Name          | Location
---------------------------------------------------------------------
-my-repository | /home/jbonofre/apache-karaf-3.0.1/cave/my-repository
-m2            | /home/jbonofre/.m2/repository
-{code}
-
-You can find the repository name and location.
-
-h2. Repository and OBR service
-
-By default, Apache Karaf Cave installs the repository in the Apache Karaf OBR service.
-
-You can see the installed repositories using the {{obr:url-list}} command:
-
-{code}
-karaf@root()> obr:url-list
-Index | OBR URL
---------------------------------------------------------------------------------
-0     | file:/home/jbonofre/.m2/repository/repository.xml
-1     | file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/repository.xml
-{code}
-
-You can refresh a repository or install a repository in the OBR service using the {{cave:repository-install}} command:
-
-{code}
-karaf@root()> cave:repository-install my-repository
-{code}
-
-You can uninstall a repository from the Apache Karaf OBR service using the {{cave:repository-uninstall}} command:
-
-{code}
-karaf@root()> cave:repository-uninstall my-repository
-{code}
-
-You can see with the {{obr:url-list}} command that the repository is no more known by the OBR service:
-
-{code}
-karaf@root()> obr:url-list
-Index | OBR URL
----------------------------------------------------------
-0     | file:/home/jbonofre/.m2/repository/repository.xml
-{code}
-
-You can "re-install" the repository at any time using the {{cave:repository-install}} command again:
-
-{code}
-karaf@root()> cave:repository-install my-repository
-karaf@root()> obr:url-list
-Index | OBR URL
---------------------------------------------------------------------------------
-0     | file:/home/jbonofre/.m2/repository/repository.xml
-1     | file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/repository.xml
-{code}
-
-At any time, you can force the generation and update of the OBR metadata using the {{cave:repository-update}} command:
-
-{code}
-karaf@root()> cave:repository-update my-repository
-{code}
-
-This command scan the repository storage location, seeking all OSGi bundles, and generate the OBR metadata (aka a repository.xml).
-
-NB: If you add or remove any artifact in the repository storage location by hand (for instance, using cp, rm, etc on Unix),
-you have to update the repository OBR metadata using the {{cave:repository-update}} command.
-
-h2. Destroy
-
-The {{cave:repository-destroy}} command deletes the repository storage location:
-
-{code}
-karaf@root()> cave:repository-destroy my-repository
-{code}
-
-{warning}
-Be aware that this command 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.
-
-If repositories are installed in the OBR service, you can use the OBR command as explained in the [OBR commands section|obr-command]
-of the user guide.

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/user-guide/http-wrapper.conf
----------------------------------------------------------------------
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 f96614c..0000000
--- a/manual/src/main/webapp/user-guide/http-wrapper.conf
+++ /dev/null
@@ -1,173 +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 OBR metadata presents in local repositories are exposed over HTTP.
-
-h2. OBR metadata access
-
-Assuming that you have the following repositories:
-
-{code}
-karaf@root()> cave:repositories
-Name          | Location
---------------------------------------------------------------------
-my-repository | /home/jbonofre/apache-karaf-3.0.1/cave/my-repository
-m2            | /home/jbonofre/.m2/repository
-{code}
-
-You can access the OBR metadata using the following URL in your favorite browser:
-
-{code}
-http://localhost:8181/cave/m2-repository.xml
-{code}
-
-and
-
-{code}
-http://localhost:8181/cave/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:
-
-You can note the OBR metadata Cave URL format:
-
-{code}
-http://[cave_server_hostname]:[http_service_port]/cave/[cave_repository_name]-repository.xml
-{code}
-
-It means that you can register the repositories on remote Apache Karaf instances.
-
-In a remote Apache Karaf instance, you just have to install the obr feature and register the HTTP wrapper repository.xml URL:
-
-{code}
-karaf@other()> feature:install obr
-karaf@other()> obr:url-add http://cave_server:8181/cave/cave-repo-repository.xml
-karaf@other()> obr:url-add http://cave_server:8181/cave/m2-repository.xml
-{code}
-
-h2. OSGi bundles access
-
-Apache Karaf Cave HTTP wrapper service also provide the OSGi bundles binaries via HTTP.
-
-For instance, you have register the my-repository repository in the OBR service:
-
-{code}
-karaf@root()> cave:repository-install my-repository
-{code}
-
-So you have the following bundles available in the OBR service:
-
-{code}
-karaf@root()> obr:list
-Name                                                                                                  | Symbolic Name                                                       | Version
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-Apache ServiceMix :: Bundles :: commons-dbcp                                                          | org.apache.servicemix.bundles.commons-dbcp                          | 1.4.0.3
-...
-{code}
-
-If we take a look on the detail of the commons-dbcp bundle:
-
-{code}
-karaf@root()> obr:info org.apache.servicemix.bundles.commons-dbcp
---------------------------------------------
-Apache ServiceMix :: Bundles :: commons-dbcp
---------------------------------------------
-id: org.apache.servicemix.bundles.commons-dbcp/1.4.0.3
-description: This OSGi bundle wraps commons-dbcp 1.4 jar file.
-documentation: http://www.apache.org/
-symbolicname: org.apache.servicemix.bundles.commons-dbcp
-presentationname: Apache ServiceMix :: Bundles :: commons-dbcp
-license: http://www.apache.org/licenses/LICENSE-2.0.txt
-uri: file:/home/jbonofre/.m2/repository/org/apache/servicemix/bundles/org.apache.servicemix.bundles.commons-dbcp/1.4_3/org.apache.servicemix.bundles.commons-dbcp-1.4_3.jar
-size: 171252
-version: 1.4.0.3
-Requires:
-   package:(&(package=javax.naming))
-   package:(&(package=javax.naming.spi))
-   package:(&(package=javax.sql))
-   package:(&(package=javax.transaction))
-   package:(&(package=javax.transaction.xa))
-   package:(&(package=org.apache.commons.pool)(version>=1.3.0)(!(version>=2.0.0)))
-   package:(&(package=org.apache.commons.pool.impl)(version>=1.3.0)(!(version>=2.0.0)))
-   package:(&(package=org.xml.sax))
-   package:(&(package=org.xml.sax.helpers))
-Capabilities:
-   bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-dbcp, presentationname=Apache ServiceMix :: Bundles :: commons-dbcp, version=1.4.0.3}
-   package:{package=org.apache.commons.dbcp.cpdsadapter, uses:=org.apache.commons.dbcp,javax.naming,javax.sql,org.apache.commons.pool.impl,org.apache.commons.pool,javax.naming.spi, version=1.4.0}
-   package:{package=org.apache.commons.dbcp, uses:=org.apache.commons.pool.impl,org.apache.commons.pool,javax.sql,javax.naming,javax.naming.spi,org.apache.commons.jocl,org.xml.sax, version=1.4.0}
-   package:{package=org.apache.commons.dbcp.managed, uses:=org.apache.commons.dbcp,javax.sql,org.apache.commons.pool.impl,javax.transaction,org.apache.commons.pool,javax.transaction.xa, version=1.4.0}
-   package:{package=org.apache.commons.dbcp.datasources, uses:=javax.sql,org.apache.commons.pool,javax.naming,org.apache.commons.dbcp,javax.naming.spi,org.apache.commons.pool.impl, version=1.4.0}
-   package:{package=org.apache.commons.jocl, uses:=org.xml.sax.helpers,org.xml.sax, version=1.4.0}
-{code}
-
-we can see that the URI is {{file:/home/jbonofre/.m2/repository/org/apache/servicemix/bundles/org.apache.servicemix.bundles.commons-dbcp/1.4_3/org.apache.servicemix.bundles.commons-dbcp-1.4_3.jar}}.
-
-But the HTTP wrapper service also exposes the bundle on:
-
-{code}
-http://localhost:8181/cave/org.apache.servicemix.bundles.commons-dbcp-1.4.0.3.jar
-{code}
-
-Actually, Apache Karaf Cave handles bundle URI relatively to the repository.
-
-So, it means that, if you register the my-repository repository on a remote Apache Karaf instance:
-
-{code}
-karaf@other()> feature:install obr
-karaf@other()> obr:url-add http://cave_server:8181/cave/my-repository-repository.xml
-{code}
-
-you can take a look on the commons-dbcp details:
-
-{code}
-karaf@root()> obr:info org.apache.servicemix.bundles.commons-dbcp
---------------------------------------------
-Apache ServiceMix :: Bundles :: commons-dbcp
---------------------------------------------
-id: org.apache.servicemix.bundles.commons-dbcp/1.4.0.3
-description: This OSGi bundle wraps commons-dbcp 1.4 jar file.
-documentation: http://www.apache.org/
-symbolicname: org.apache.servicemix.bundles.commons-dbcp
-presentationname: Apache ServiceMix :: Bundles :: commons-dbcp
-license: http://www.apache.org/licenses/LICENSE-2.0.txt
-uri: http://localhost:8181/cave/org.apache.servicemix.bundles.commons-dbcp-1.4.0.3.jar
-size: 171252
-version: 1.4.0.3
-Requires:
-   package:(&(package=javax.naming))
-   package:(&(package=javax.naming.spi))
-   package:(&(package=javax.sql))
-   package:(&(package=javax.transaction))
-   package:(&(package=javax.transaction.xa))
-   package:(&(package=org.apache.commons.pool)(version>=1.3.0)(!(version>=2.0.0)))
-   package:(&(package=org.apache.commons.pool.impl)(version>=1.3.0)(!(version>=2.0.0)))
-   package:(&(package=org.xml.sax))
-   package:(&(package=org.xml.sax.helpers))
-Capabilities:
-   bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-dbcp, presentationname=Apache ServiceMix :: Bundles :: commons-dbcp, version=1.4.0.3}
-   package:{package=org.apache.commons.dbcp.cpdsadapter, uses:=org.apache.commons.dbcp,javax.naming,javax.sql,org.apache.commons.pool.impl,org.apache.commons.pool,javax.naming.spi, version=1.4.0}
-   package:{package=org.apache.commons.dbcp, uses:=org.apache.commons.pool.impl,org.apache.commons.pool,javax.sql,javax.naming,javax.naming.spi,org.apache.commons.jocl,org.xml.sax, version=1.4.0}
-   package:{package=org.apache.commons.dbcp.managed, uses:=org.apache.commons.dbcp,javax.sql,org.apache.commons.pool.impl,javax.transaction,org.apache.commons.pool,javax.transaction.xa, version=1.4.0}
-   package:{package=org.apache.commons.dbcp.datasources, uses:=javax.sql,org.apache.commons.pool,javax.naming,org.apache.commons.dbcp,javax.naming.spi,org.apache.commons.pool.impl, version=1.4.0}
-   package:{package=org.apache.commons.jocl, uses:=org.xml.sax.helpers,org.xml.sax, version=1.4.0}
-{code}
-
-we can see that the URI is {{http://localhost:8181/cave/org.apache.servicemix.bundles.commons-dbcp-1.4.0.3.jar}}.
-
-It means that we can use directly {{obr:deploy}} command:
-
-{code}
-karaf@root> obr:deploy org.apache.servicemix.bundles.commons-dbcp
-Target resource(s):
--------------------
-   Apache ServiceMix :: Bundles :: commons-dbcp (1.4.0.3)
-
-Required resource(s):
----------------------
-   Apache ServiceMix :: Bundles :: commons-pool (1.5.4.3)
-
-Deploying...done.
-{code}

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/user-guide/index.conf
----------------------------------------------------------------------
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 111873c..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]
-* [OBR commands|obr-commands]
-* [HTTP wrapper service|/user-guide/http-wrapper]
-* [Administration|/user-guide/administrate-cave]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/user-guide/installation.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/user-guide/installation.conf b/manual/src/main/webapp/user-guide/installation.conf
deleted file mode 100644
index badaccd..0000000
--- a/manual/src/main/webapp/user-guide/installation.conf
+++ /dev/null
@@ -1,45 +0,0 @@
-h1. Installation
-
-This chapter describes how to install Apache Karaf Cave into an existing Apache Karaf instance.
-
-h2. Pre-installation requirements
-
-As Apache Karaf Cave is a Apache Karaf sub-project, it has to be installed into a running Apache Karaf instance.
-
-Apache Karaf Cave is available as Apache Karaf features. The easiest way to install is just to have an internet
-connection from the Apache Karaf running instance.
-
-h2. 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 mvn:org.apache.karaf.cave/apache-karaf-cave/3.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                   | 3.0.0   | x         | karaf-cave-3.0.0 |
-{code}
-
-h3. Starting Apache Karaf Cave Server
-
-The Apache Karaf Cave Server is installed by the {{cave-server}} feature:
-
-{code}
-karaf@root()> feature:install cave-server
-{code}
-
-NB: installation of the cave-server feature will install additional features, such as obr, http, war. It could take
-several minutes depending of your network connection speed.
-
-New Apache Karaf Cave commands are now 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}

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/user-guide/obr-commands.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/user-guide/obr-commands.conf b/manual/src/main/webapp/user-guide/obr-commands.conf
deleted file mode 100644
index f1e4c06..0000000
--- a/manual/src/main/webapp/user-guide/obr-commands.conf
+++ /dev/null
@@ -1,150 +0,0 @@
-h1. OBR commands
-
-To install a repository in the OBR service, you have to use:
-
-{code}
-karaf@root()> cave:repository-install cave-repo
-{code}
-
-Now, you can see the repository OBR metadata register in the OBR service:
-
-{code}
-karaf@root()> obr:url-list
-Index | OBR URL
---------------------------------------------------------------------------------
-0     | file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/repository.xml
-{code}
-
-And the OSGi bundles present in the repository OSGi bundles are available in the OBR service:
-
-{code}
-karaf@root()> obr:list
-Name                                         | Symbolic Name                              | Version
----------------------------------------------------------------------------------------------------
-Apache ServiceMix :: Bundles :: commons-dbcp | org.apache.servicemix.bundles.commons-dbcp | 1.4.0.3
-...
-{code}
-
-You can get some detail about an OSGi bundle:
-
-{code}
-karaf@root()> obr:info org.apache.servicemix.bundles.commons-dbcp,1.4.0.3
---------------------------------------------
-Apache ServiceMix :: Bundles :: commons-dbcp
---------------------------------------------
-id: org.apache.servicemix.bundles.commons-dbcp/1.4.0.3
-description: This OSGi bundle wraps commons-dbcp 1.4 jar file.
-documentation: http://www.apache.org/
-symbolicname: org.apache.servicemix.bundles.commons-dbcp
-presentationname: Apache ServiceMix :: Bundles :: commons-dbcp
-license: http://www.apache.org/licenses/LICENSE-2.0.txt
-uri: file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/org.apache.servicemix.bundles.commons-dbcp-1.4.0.3.jar
-size: 171252
-version: 1.4.0.3
-Requires:
-   package:(&(package=javax.naming))
-   package:(&(package=javax.naming.spi))
-   package:(&(package=javax.sql))
-   package:(&(package=javax.transaction))
-   package:(&(package=javax.transaction.xa))
-   package:(&(package=org.apache.commons.pool)(version>=1.3.0)(!(version>=2.0.0)))
-   package:(&(package=org.apache.commons.pool.impl)(version>=1.3.0)(!(version>=2.0.0)))
-   package:(&(package=org.xml.sax))
-   package:(&(package=org.xml.sax.helpers))
-Capabilities:
-   bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-dbcp, presentationname=Apache ServiceMix :: Bundles :: commons-dbcp, version=1.4.0.3}
-   package:{package=org.apache.commons.dbcp.cpdsadapter, uses:=org.apache.commons.dbcp,javax.naming,javax.sql,org.apache.commons.pool.impl,org.apache.commons.pool,javax.naming.spi, version=1.4.0}
-   package:{package=org.apache.commons.dbcp, uses:=org.apache.commons.pool.impl,org.apache.commons.pool,javax.sql,javax.naming,javax.naming.spi,org.apache.commons.jocl,org.xml.sax, version=1.4.0}
-   package:{package=org.apache.commons.dbcp.managed, uses:=org.apache.commons.dbcp,javax.sql,org.apache.commons.pool.impl,javax.transaction,org.apache.commons.pool,javax.transaction.xa, version=1.4.0}
-   package:{package=org.apache.commons.dbcp.datasources, uses:=javax.sql,org.apache.commons.pool,javax.naming,org.apache.commons.dbcp,javax.naming.spi,org.apache.commons.pool.impl, version=1.4.0}
-   package:{package=org.apache.commons.jocl, uses:=org.xml.sax.helpers,org.xml.sax, version=1.4.0}
-{code}
-
-NB: in Apache Karaf, the OBR entry format is symbolicname,version
-
-You have the details of the OSGi bundle, especially the requirements and capabilities of the bundle.
-
-OBR is able to resolve the dependencies between bundles, depending of the requirements and capabilities of each bundle.
-It's able to manage version, etc.
-
-For instance, we have the following commons-dbcp bundle details:
-
-{code}
-karaf@root> obr:info org.apache.servicemix.bundles.commons-dbcp
---------------------------------------------
-Apache ServiceMix :: Bundles :: commons-dbcp
---------------------------------------------
-id: org.apache.servicemix.bundles.commons-dbcp/1.4.0.3
-description: This OSGi bundle wraps commons-dbcp 1.4 jar file.
-documentation: http://www.apache.org/
-symbolicname: org.apache.servicemix.bundles.commons-dbcp
-presentationname: Apache ServiceMix :: Bundles :: commons-dbcp
-license: http://www.apache.org/licenses/LICENSE-2.0.txt
-uri: file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/org.apache.servicemix.bundles.commons-dbcp-1.4.0.3.jar
-size: 171252
-version: 1.4.0.3
-Requires:
-   package:(&(package=javax.naming))
-   package:(&(package=javax.naming.spi))
-   package:(&(package=javax.sql))
-   package:(&(package=javax.transaction))
-   package:(&(package=javax.transaction.xa))
-   package:(&(package=org.apache.commons.pool)(version>=1.3.0)(!(version>=2.0.0)))
-   package:(&(package=org.apache.commons.pool.impl)(version>=1.3.0)(!(version>=2.0.0)))
-   package:(&(package=org.xml.sax))
-   package:(&(package=org.xml.sax.helpers))
-Capabilities:
-   bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-dbcp, presentationname=Apache ServiceMix :: Bundles :: commons-dbcp, version=1.4.0.3}
-   package:{package=org.apache.commons.dbcp.cpdsadapter, uses:=org.apache.commons.dbcp,javax.naming,javax.sql,org.apache.commons.pool.impl,org.apache.commons.pool,javax.naming.spi, version=1.4.0}
-   package:{package=org.apache.commons.dbcp, uses:=org.apache.commons.pool.impl,org.apache.commons.pool,javax.sql,javax.naming,javax.naming.spi,org.apache.commons.jocl,org.xml.sax, version=1.4.0}
-   package:{package=org.apache.commons.dbcp.managed, uses:=org.apache.commons.dbcp,javax.sql,org.apache.commons.pool.impl,javax.transaction,org.apache.commons.pool,javax.transaction.xa, version=1.4.0}
-   package:{package=org.apache.commons.dbcp.datasources, uses:=javax.sql,org.apache.commons.pool,javax.naming,org.apache.commons.dbcp,javax.naming.spi,org.apache.commons.pool.impl, version=1.4.0}
-   package:{package=org.apache.commons.jocl, uses:=org.xml.sax.helpers,org.xml.sax, version=1.4.0}
-
-{code}
-
-We can see that commons-dbcp requires org.apache.commons.pool package (between version 1.3.0 and 2.0.0).
-
-If we take a look on commons-pool bundle details:
-
-{code}
-karaf@root()> obr:info org.apache.servicemix.bundles.commons-pool
---------------------------------------------
-Apache ServiceMix :: Bundles :: commons-pool
---------------------------------------------
-id: org.apache.servicemix.bundles.commons-pool/1.5.4.3
-description: This OSGi bundle wraps commons-pool 1.5.4 jar file.
-documentation: http://www.apache.org/
-symbolicname: org.apache.servicemix.bundles.commons-pool
-presentationname: Apache ServiceMix :: Bundles :: commons-pool
-license: http://www.apache.org/licenses/LICENSE-2.0.txt
-uri: file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/org.apache.servicemix.bundles.commons-pool-1.5.4.3.jar
-size: 97332
-version: 1.5.4.3
-Capabilities:
-   bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-pool, presentationname=Apache ServiceMix :: Bundles :: commons-pool, version=1.5.4.3}
-   package:{package=org.apache.commons.pool.impl, uses:=org.apache.commons.pool, version=1.5.4}
-   package:{package=org.apache.commons.pool, version=1.5.4}
-{code}
-
-This bundle provides package org.apache.commons.pool capability.
-
-It means that if I deploy the commons-dbcp bundle, the OBR should also install the commons-pool bundle:
-
-{code}
-karaf@root()> obr:deploy org.apache.servicemix.bundles.commons-dbcp
-Target resource(s):
--------------------
-   Apache ServiceMix :: Bundles :: commons-dbcp (1.4.0.3)
-
-Required resource(s):
----------------------
-   Apache ServiceMix :: Bundles :: commons-pool (1.5.4.3)
-
-Deploying...done.
-{code}
-
-Done: the OBR has resolved the commons-dbcp requirements using the commons-pool capabilities and so installed the
-commons-pool bundle.
-
-NB: in the {{obr:deploy}} command, if you don't mention the version, it will take the highly version available.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/user-guide/populate-repository.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/user-guide/populate-repository.conf b/manual/src/main/webapp/user-guide/populate-repository.conf
deleted file mode 100644
index 236aad6..0000000
--- a/manual/src/main/webapp/user-guide/populate-repository.conf
+++ /dev/null
@@ -1,54 +0,0 @@
-h1. Populate repository
-
-You can add new artifacts in a repository.
-
-h2. Upload a single artifact
-
-You can upload a single artifact into a Cave Repository:
-
-{code}
-karaf@root()> cave:repository-upload-artifact my-repository file:/home/jbonofre/.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-artifact 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-artifact my-repository mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/1.7.0_5
-{code}
-
-h3. 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/jbonofre/.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
-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
-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

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/user-guide/proxy-repository.conf
----------------------------------------------------------------------
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 667fa52..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 OBR 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 OBR 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:proxy-repository}} command accepts the filter option, as the {{cave:populate-repository}} 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


[2/2] karaf-cave git commit: KARAF-3679 - Use asciidoc for Cave documentation

Posted by jb...@apache.org.
KARAF-3679 - Use asciidoc for Cave documentation


Project: http://git-wip-us.apache.org/repos/asf/karaf-cave/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf-cave/commit/12250688
Tree: http://git-wip-us.apache.org/repos/asf/karaf-cave/tree/12250688
Diff: http://git-wip-us.apache.org/repos/asf/karaf-cave/diff/12250688

Branch: refs/heads/cave-3.x
Commit: 122506889de9a5998d9b78a4e856dd4169f332b8
Parents: 4675cd4
Author: Jean-Baptiste Onofré <jb...@apache.org>
Authored: Thu Dec 24 14:20:28 2015 +0100
Committer: Jean-Baptiste Onofré <jb...@apache.org>
Committed: Thu Dec 24 14:20:28 2015 +0100

----------------------------------------------------------------------
 manual/pom.xml                                  | 197 +----
 manual/src/main/asciidoc/index.adoc             |  41 +
 manual/src/main/asciidoc/overview.adoc          |  40 +
 .../asciidoc/user-guide/administrate-cave.adoc  |  35 +
 .../asciidoc/user-guide/cave-repository.adoc    | 178 ++++
 .../main/asciidoc/user-guide/http-wrapper.adoc  | 187 +++++
 .../main/asciidoc/user-guide/installation.adoc  |  59 ++
 .../main/asciidoc/user-guide/obr-commands.adoc  | 164 ++++
 .../user-guide/populate-repository.adoc         |  66 ++
 .../asciidoc/user-guide/proxy-repository.adoc   |  35 +
 .../main/asciidoc/user-guide/user-index.adoc    |  23 +
 .../WEB-INF/scalate/layouts/default.scaml       | 116 ---
 .../webapp/WEB-INF/scalate/layouts/print.ssp    | 817 -------------------
 manual/src/main/webapp/WEB-INF/web.xml          |  50 --
 manual/src/main/webapp/index.conf               |   6 -
 manual/src/main/webapp/manual.conf              |  38 -
 manual/src/main/webapp/overview.conf            |  26 -
 .../webapp/user-guide/administrate-cave.conf    |  21 -
 .../main/webapp/user-guide/cave-repository.conf | 166 ----
 .../main/webapp/user-guide/http-wrapper.conf    | 173 ----
 manual/src/main/webapp/user-guide/index.conf    |   9 -
 .../main/webapp/user-guide/installation.conf    |  45 -
 .../main/webapp/user-guide/obr-commands.conf    | 150 ----
 .../webapp/user-guide/populate-repository.conf  |  54 --
 .../webapp/user-guide/proxy-repository.conf     |  21 -
 25 files changed, 853 insertions(+), 1864 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/pom.xml
----------------------------------------------------------------------
diff --git a/manual/pom.xml b/manual/pom.xml
index c672783..205947d 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,48 @@
                         </goals>
                         <configuration>
                             <tasks>
-                                <mkdir dir="${manual.dir}"/>
-                                <move file="${project.build.directory}/sitegen/manual.html" tofile="${manual}.html"/>
+                                <mkdir dir="target"/>
+                                <copy 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="documentation.html"/>
+                                    <arg value="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>
-                </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>
@@ -242,14 +105,4 @@
         </plugins>
     </build>
 
-    <reporting>
-        <plugins>
-            <plugin>
-                <groupId>org.fusesource.scalate</groupId>
-                <artifactId>maven-scalate-plugin</artifactId>
-                <version>${scalate.version}</version>
-            </plugin>
-        </plugins>
-    </reporting>
-
 </project>

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/index.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/index.adoc b/manual/src/main/asciidoc/index.adoc
new file mode 100644
index 0000000..011a348
--- /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 3.x - Documentation
+=====================================
+Apache Software Foundation
+:doctype: book
+:toc: left
+:toclevels: 3
+:toc-position: left
+:toc-title: Apache Karaf Cave 3.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/obr-commands.adoc[]
+
+include::user-guide/http-wrapper.adoc[]
+
+include::user-guide/administrate-cave.adoc[]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/overview.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/overview.adoc b/manual/src/main/asciidoc/overview.adoc
new file mode 100644
index 0000000..52c2f17
--- /dev/null
+++ b/manual/src/main/asciidoc/overview.adoc
@@ -0,0 +1,40 @@
+//
+// 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.
+
+It provides an OSGi Bundle Repository (OBR) and Karaf Features Repository (KFR).
+
+OBR provides a service that can automatically install a bundle, with its deployment dependencies, from a bundle
+repository.
+
+Apache Karaf Cave provides the following features:
+
+* *Storage*: Karaf Cave includes a storage backend. The default one is a simple filesystem backend. As the Cave backend
+is designed in a plugin way, you can implement your own backend (for instance, JDBC or LDAP backend).
+* *OBR Metadata Generation*: Karaf Cave automatically creates the OBR metadata for you, using the artifacts presents
+in the Cave repository storage.
+* *OBR Registration*: Karaf Cave allows you to directly register a Cave repository into an OBR RepositoryAdmin OSGi
+service.
+* *Artifact Upload*: Users can upload OSGi bundle in a Cave repository. It supports URLs like `mvn:groupId/artifactId/version`,
+`file:`, `http:`, etc.
+* *Repository proxy*: Karaf Cave is able to proxy an existing repository, for instance an existing Maven repository.
+The artifacts are located on the "external" repository, Cave handles the OBR metadata. Cave supports file: and http:
+URLs, it means that Cave is able to browse a remote HTTP Maven repository for instance.
+* *Repository population*: Karaf Cave is able to get artifacts present on an "external" repository (local file: or
+remote http:), looking for OSGi bundles, and copy the artifacts in the Cave repository storage.
+
+The `cave-server` feature provides the OBR and KFR server, including the storage backend, management layer and shell commands.

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/user-guide/administrate-cave.adoc
----------------------------------------------------------------------
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..513b817
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/administrate-cave.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.
+//
+
+== Administration
+
+When you install Apache Karaf Cave server, it provides a new CaveServerMBean.
+
+This MBean use 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 generateObr, 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 generateObr, String filter) throws Exception;`
+* `void proxyRepository(String name, String url, boolean generateObr, String filter) throws Exception;`
+* `void updateRepository(String name) throws Exception;`
+* `void uploadArtifact(String repository, String artifactUrl, boolean generateObr) throws Exception;`
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/user-guide/cave-repository.adoc
----------------------------------------------------------------------
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..7408e61
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/cave-repository.adoc
@@ -0,0 +1,178 @@
+//
+// 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:
+
+* OSGi bundles (jar files)
+* OBR (OSGi Bundle Repository) metadata (aka a repository.xml file)
+
+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
+#
+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 OBR metadata. You can use the `-no` (`--no-obr-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 OBR service. You can use the `-ni` (`--no-install`)
+option to avoid this step:
+
+----
+karaf@root()> cave:repository-create -ni -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 using the `cave:repositories` command:
+
+----
+karaf@root()> cave:repositories
+Name          | Location
+--------------------------------------------------------------------
+my-repository | /home/jbonofre/apache-karaf-3.0.1/cave/my-repository
+m2            | /home/jbonofre/.m2/repository
+----
+
+You can find the repository name and location.
+
+=== Repository and OBR service
+
+By default, Apache Karaf Cave installs the repository in the Apache Karaf OBR service.
+
+You can see the installed repositories using the `obr:url-list` command:
+
+----
+karaf@root()> obr:url-list
+Index | OBR URL
+--------------------------------------------------------------------------------
+0     | file:/home/jbonofre/.m2/repository/repository.xml
+1     | file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/repository.xml
+----
+
+You can refresh a repository or install a repository in the OBR service using the `cave:repository-install` command:
+
+----
+karaf@root()> cave:repository-install my-repository
+----
+
+You can uninstall a repository from the Apache Karaf OBR service using the `cave:repository-uninstall` command:
+
+----
+karaf@root()> cave:repository-uninstall my-repository
+----
+
+You can see with the `obr:url-list` command that the repository is no more known by the OBR service:
+
+----
+karaf@root()> obr:url-list
+Index | OBR URL
+---------------------------------------------------------
+0     | file:/home/jbonofre/.m2/repository/repository.xml
+----
+
+You can "re-install" the repository at any time using the `cave:repository-install` command again:
+
+----
+karaf@root()> cave:repository-install my-repository
+karaf@root()> obr:url-list
+Index | OBR URL
+--------------------------------------------------------------------------------
+0     | file:/home/jbonofre/.m2/repository/repository.xml
+1     | file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/repository.xml
+----
+
+At any time, you can force the generation and update of the OBR metadata using the `cave:repository-update` command:
+
+----
+karaf@root()> cave:repository-update my-repository
+----
+
+This command scan the repository storage location, seeking all OSGi bundles, and generate the OBR metadata (aka a repository.xml).
+
+NB: If you add or remove any artifact in the repository storage location by hand (for instance, using cp, rm, etc on Unix),
+you have to update the repository OBR metadata using the `cave:repository-update` command.
+
+=== Destroy
+
+The `cave:repository-destroy` command deletes the repository storage location:
+
+----
+karaf@root()> cave:repository-destroy my-repository
+----
+
+*Be aware that this command completely deletes the repository storage. By extremely careful when using this command
+with repository using "custom" location.*
+
+=== 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 link::http-wrapper[HTTP wrapper service section] of the user guide.
+
+If repositories are installed in the OBR service, you can use the OBR command as explained in the link::obr-command[OBR commands section]
+of the user guide.

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/user-guide/http-wrapper.adoc
----------------------------------------------------------------------
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..eb2aab9
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/http-wrapper.adoc
@@ -0,0 +1,187 @@
+//
+// 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 OBR metadata presents in local repositories are exposed over HTTP.
+
+=== OBR metadata access
+
+Assuming that you have the following repositories:
+
+----
+karaf@root()> cave:repositories
+Name          | Location
+--------------------------------------------------------------------
+my-repository | /home/jbonofre/apache-karaf-3.0.1/cave/my-repository
+m2            | /home/jbonofre/.m2/repository
+----
+
+You can access the OBR metadata using the following URL in your favorite browser:
+
+----
+http://localhost:8181/cave/m2-repository.xml
+----
+
+and
+
+----
+http://localhost:8181/cave/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:
+
+You can note the OBR metadata Cave URL format:
+
+----
+http://[cave_server_hostname]:[http_service_port]/cave/[cave_repository_name]-repository.xml
+----
+
+It means that you can register the repositories on remote Apache Karaf instances.
+
+In a remote Apache Karaf instance, you just have to install the obr feature and register the HTTP wrapper repository.xml URL:
+
+----
+karaf@other()> feature:install obr
+karaf@other()> obr:url-add http://cave_server:8181/cave/cave-repo-repository.xml
+karaf@other()> obr:url-add http://cave_server:8181/cave/m2-repository.xml
+----
+
+=== OSGi bundles access
+
+Apache Karaf Cave HTTP wrapper service also provide the OSGi bundles binaries via HTTP.
+
+For instance, you have register the my-repository repository in the OBR service:
+
+----
+karaf@root()> cave:repository-install my-repository
+----
+
+So you have the following bundles available in the OBR service:
+
+----
+karaf@root()> obr:list
+Name                                                                                                  | Symbolic Name                                                       | Version
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Apache ServiceMix :: Bundles :: commons-dbcp                                                          | org.apache.servicemix.bundles.commons-dbcp                          | 1.4.0.3
+...
+----
+
+If we take a look on the detail of the commons-dbcp bundle:
+
+----
+karaf@root()> obr:info org.apache.servicemix.bundles.commons-dbcp
+--------------------------------------------
+Apache ServiceMix :: Bundles :: commons-dbcp
+--------------------------------------------
+id: org.apache.servicemix.bundles.commons-dbcp/1.4.0.3
+description: This OSGi bundle wraps commons-dbcp 1.4 jar file.
+documentation: http://www.apache.org/
+symbolicname: org.apache.servicemix.bundles.commons-dbcp
+presentationname: Apache ServiceMix :: Bundles :: commons-dbcp
+license: http://www.apache.org/licenses/LICENSE-2.0.txt
+uri: file:/home/jbonofre/.m2/repository/org/apache/servicemix/bundles/org.apache.servicemix.bundles.commons-dbcp/1.4_3/org.apache.servicemix.bundles.commons-dbcp-1.4_3.jar
+size: 171252
+version: 1.4.0.3
+Requires:
+   package:(&(package=javax.naming))
+   package:(&(package=javax.naming.spi))
+   package:(&(package=javax.sql))
+   package:(&(package=javax.transaction))
+   package:(&(package=javax.transaction.xa))
+   package:(&(package=org.apache.commons.pool)(version>=1.3.0)(!(version>=2.0.0)))
+   package:(&(package=org.apache.commons.pool.impl)(version>=1.3.0)(!(version>=2.0.0)))
+   package:(&(package=org.xml.sax))
+   package:(&(package=org.xml.sax.helpers))
+Capabilities:
+   bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-dbcp, presentationname=Apache ServiceMix :: Bundles :: commons-dbcp, version=1.4.0.3}
+   package:{package=org.apache.commons.dbcp.cpdsadapter, uses:=org.apache.commons.dbcp,javax.naming,javax.sql,org.apache.commons.pool.impl,org.apache.commons.pool,javax.naming.spi, version=1.4.0}
+   package:{package=org.apache.commons.dbcp, uses:=org.apache.commons.pool.impl,org.apache.commons.pool,javax.sql,javax.naming,javax.naming.spi,org.apache.commons.jocl,org.xml.sax, version=1.4.0}
+   package:{package=org.apache.commons.dbcp.managed, uses:=org.apache.commons.dbcp,javax.sql,org.apache.commons.pool.impl,javax.transaction,org.apache.commons.pool,javax.transaction.xa, version=1.4.0}
+   package:{package=org.apache.commons.dbcp.datasources, uses:=javax.sql,org.apache.commons.pool,javax.naming,org.apache.commons.dbcp,javax.naming.spi,org.apache.commons.pool.impl, version=1.4.0}
+   package:{package=org.apache.commons.jocl, uses:=org.xml.sax.helpers,org.xml.sax, version=1.4.0}
+----
+
+we can see that the URI is `file:/home/jbonofre/.m2/repository/org/apache/servicemix/bundles/org.apache.servicemix.bundles.commons-dbcp/1.4_3/org.apache.servicemix.bundles.commons-dbcp-1.4_3.jar`.
+
+But the HTTP wrapper service also exposes the bundle on:
+
+----
+http://localhost:8181/cave/org.apache.servicemix.bundles.commons-dbcp-1.4.0.3.jar
+----
+
+Actually, Apache Karaf Cave handles bundle URI relatively to the repository.
+
+So, it means that, if you register the my-repository repository on a remote Apache Karaf instance:
+
+----
+karaf@other()> feature:install obr
+karaf@other()> obr:url-add http://cave_server:8181/cave/my-repository-repository.xml
+----
+
+you can take a look on the commons-dbcp details:
+
+----
+karaf@root()> obr:info org.apache.servicemix.bundles.commons-dbcp
+--------------------------------------------
+Apache ServiceMix :: Bundles :: commons-dbcp
+--------------------------------------------
+id: org.apache.servicemix.bundles.commons-dbcp/1.4.0.3
+description: This OSGi bundle wraps commons-dbcp 1.4 jar file.
+documentation: http://www.apache.org/
+symbolicname: org.apache.servicemix.bundles.commons-dbcp
+presentationname: Apache ServiceMix :: Bundles :: commons-dbcp
+license: http://www.apache.org/licenses/LICENSE-2.0.txt
+uri: http://localhost:8181/cave/org.apache.servicemix.bundles.commons-dbcp-1.4.0.3.jar
+size: 171252
+version: 1.4.0.3
+Requires:
+   package:(&(package=javax.naming))
+   package:(&(package=javax.naming.spi))
+   package:(&(package=javax.sql))
+   package:(&(package=javax.transaction))
+   package:(&(package=javax.transaction.xa))
+   package:(&(package=org.apache.commons.pool)(version>=1.3.0)(!(version>=2.0.0)))
+   package:(&(package=org.apache.commons.pool.impl)(version>=1.3.0)(!(version>=2.0.0)))
+   package:(&(package=org.xml.sax))
+   package:(&(package=org.xml.sax.helpers))
+Capabilities:
+   bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-dbcp, presentationname=Apache ServiceMix :: Bundles :: commons-dbcp, version=1.4.0.3}
+   package:{package=org.apache.commons.dbcp.cpdsadapter, uses:=org.apache.commons.dbcp,javax.naming,javax.sql,org.apache.commons.pool.impl,org.apache.commons.pool,javax.naming.spi, version=1.4.0}
+   package:{package=org.apache.commons.dbcp, uses:=org.apache.commons.pool.impl,org.apache.commons.pool,javax.sql,javax.naming,javax.naming.spi,org.apache.commons.jocl,org.xml.sax, version=1.4.0}
+   package:{package=org.apache.commons.dbcp.managed, uses:=org.apache.commons.dbcp,javax.sql,org.apache.commons.pool.impl,javax.transaction,org.apache.commons.pool,javax.transaction.xa, version=1.4.0}
+   package:{package=org.apache.commons.dbcp.datasources, uses:=javax.sql,org.apache.commons.pool,javax.naming,org.apache.commons.dbcp,javax.naming.spi,org.apache.commons.pool.impl, version=1.4.0}
+   package:{package=org.apache.commons.jocl, uses:=org.xml.sax.helpers,org.xml.sax, version=1.4.0}
+----
+
+we can see that the URI is `http://localhost:8181/cave/org.apache.servicemix.bundles.commons-dbcp-1.4.0.3.jar`.
+
+It means that we can use directly `obr:deploy` command:
+
+----
+karaf@root> obr:deploy org.apache.servicemix.bundles.commons-dbcp
+Target resource(s):
+-------------------
+   Apache ServiceMix :: Bundles :: commons-dbcp (1.4.0.3)
+
+Required resource(s):
+---------------------
+   Apache ServiceMix :: Bundles :: commons-pool (1.5.4.3)
+
+Deploying...done.
+----

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/user-guide/installation.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/user-guide/installation.adoc b/manual/src/main/asciidoc/user-guide/installation.adoc
new file mode 100644
index 0000000..19147bb
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/installation.adoc
@@ -0,0 +1,59 @@
+//
+// 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.
+
+=== Pre-installation requirements
+
+As Apache Karaf Cave is a Apache Karaf sub-project, it has to be installed into a running Apache Karaf instance.
+
+Apache Karaf Cave is available as Apache Karaf features. The easiest way to install is just to have an internet
+connection from the Apache Karaf running instance.
+
+=== Registration of the Apache Karaf Cave features
+
+Simply register the Apache Karaf Cave features URL in your Apache Karaf instance:
+
+----
+karaf@root()> feature:repo-add mvn:org.apache.karaf.cave/apache-karaf-cave/3.0.0/xml/features
+----
+
+Now Apache Karaf Cave features are available, ready to be installed:
+
+----
+karaf@root()> feature:list |grep -i cave
+cave-server                   | 3.0.0   | x         | karaf-cave-3.0.0 |
+----
+
+=== Starting Apache Karaf Cave Server
+
+The Apache Karaf Cave Server is installed by the `cave-server` feature:
+
+----
+karaf@root()> feature:install cave-server
+----
+
+NB: installation of the cave-server feature will install additional features, such as obr, http, war. It could take
+several minutes depending of your network connection speed.
+
+New Apache Karaf Cave commands are now available:
+
+----
+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
+----

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/user-guide/obr-commands.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/user-guide/obr-commands.adoc b/manual/src/main/asciidoc/user-guide/obr-commands.adoc
new file mode 100644
index 0000000..6577ece
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/obr-commands.adoc
@@ -0,0 +1,164 @@
+//
+// 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.
+//
+
+== OBR commands
+
+To install a repository in the OBR service, you have to use:
+
+----
+karaf@root()> cave:repository-install cave-repo
+----
+
+Now, you can see the repository OBR metadata register in the OBR service:
+
+----
+karaf@root()> obr:url-list
+Index | OBR URL
+--------------------------------------------------------------------------------
+0     | file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/repository.xml
+----
+
+And the OSGi bundles present in the repository OSGi bundles are available in the OBR service:
+
+----
+karaf@root()> obr:list
+Name                                         | Symbolic Name                              | Version
+---------------------------------------------------------------------------------------------------
+Apache ServiceMix :: Bundles :: commons-dbcp | org.apache.servicemix.bundles.commons-dbcp | 1.4.0.3
+...
+----
+
+You can get some detail about an OSGi bundle:
+
+----
+karaf@root()> obr:info org.apache.servicemix.bundles.commons-dbcp,1.4.0.3
+--------------------------------------------
+Apache ServiceMix :: Bundles :: commons-dbcp
+--------------------------------------------
+id: org.apache.servicemix.bundles.commons-dbcp/1.4.0.3
+description: This OSGi bundle wraps commons-dbcp 1.4 jar file.
+documentation: http://www.apache.org/
+symbolicname: org.apache.servicemix.bundles.commons-dbcp
+presentationname: Apache ServiceMix :: Bundles :: commons-dbcp
+license: http://www.apache.org/licenses/LICENSE-2.0.txt
+uri: file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/org.apache.servicemix.bundles.commons-dbcp-1.4.0.3.jar
+size: 171252
+version: 1.4.0.3
+Requires:
+   package:(&(package=javax.naming))
+   package:(&(package=javax.naming.spi))
+   package:(&(package=javax.sql))
+   package:(&(package=javax.transaction))
+   package:(&(package=javax.transaction.xa))
+   package:(&(package=org.apache.commons.pool)(version>=1.3.0)(!(version>=2.0.0)))
+   package:(&(package=org.apache.commons.pool.impl)(version>=1.3.0)(!(version>=2.0.0)))
+   package:(&(package=org.xml.sax))
+   package:(&(package=org.xml.sax.helpers))
+Capabilities:
+   bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-dbcp, presentationname=Apache ServiceMix :: Bundles :: commons-dbcp, version=1.4.0.3}
+   package:{package=org.apache.commons.dbcp.cpdsadapter, uses:=org.apache.commons.dbcp,javax.naming,javax.sql,org.apache.commons.pool.impl,org.apache.commons.pool,javax.naming.spi, version=1.4.0}
+   package:{package=org.apache.commons.dbcp, uses:=org.apache.commons.pool.impl,org.apache.commons.pool,javax.sql,javax.naming,javax.naming.spi,org.apache.commons.jocl,org.xml.sax, version=1.4.0}
+   package:{package=org.apache.commons.dbcp.managed, uses:=org.apache.commons.dbcp,javax.sql,org.apache.commons.pool.impl,javax.transaction,org.apache.commons.pool,javax.transaction.xa, version=1.4.0}
+   package:{package=org.apache.commons.dbcp.datasources, uses:=javax.sql,org.apache.commons.pool,javax.naming,org.apache.commons.dbcp,javax.naming.spi,org.apache.commons.pool.impl, version=1.4.0}
+   package:{package=org.apache.commons.jocl, uses:=org.xml.sax.helpers,org.xml.sax, version=1.4.0}
+----
+
+NB: in Apache Karaf, the OBR entry format is symbolicname,version
+
+You have the details of the OSGi bundle, especially the requirements and capabilities of the bundle.
+
+OBR is able to resolve the dependencies between bundles, depending of the requirements and capabilities of each bundle.
+It's able to manage version, etc.
+
+For instance, we have the following commons-dbcp bundle details:
+
+----
+karaf@root> obr:info org.apache.servicemix.bundles.commons-dbcp
+--------------------------------------------
+Apache ServiceMix :: Bundles :: commons-dbcp
+--------------------------------------------
+id: org.apache.servicemix.bundles.commons-dbcp/1.4.0.3
+description: This OSGi bundle wraps commons-dbcp 1.4 jar file.
+documentation: http://www.apache.org/
+symbolicname: org.apache.servicemix.bundles.commons-dbcp
+presentationname: Apache ServiceMix :: Bundles :: commons-dbcp
+license: http://www.apache.org/licenses/LICENSE-2.0.txt
+uri: file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/org.apache.servicemix.bundles.commons-dbcp-1.4.0.3.jar
+size: 171252
+version: 1.4.0.3
+Requires:
+   package:(&(package=javax.naming))
+   package:(&(package=javax.naming.spi))
+   package:(&(package=javax.sql))
+   package:(&(package=javax.transaction))
+   package:(&(package=javax.transaction.xa))
+   package:(&(package=org.apache.commons.pool)(version>=1.3.0)(!(version>=2.0.0)))
+   package:(&(package=org.apache.commons.pool.impl)(version>=1.3.0)(!(version>=2.0.0)))
+   package:(&(package=org.xml.sax))
+   package:(&(package=org.xml.sax.helpers))
+Capabilities:
+   bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-dbcp, presentationname=Apache ServiceMix :: Bundles :: commons-dbcp, version=1.4.0.3}
+   package:{package=org.apache.commons.dbcp.cpdsadapter, uses:=org.apache.commons.dbcp,javax.naming,javax.sql,org.apache.commons.pool.impl,org.apache.commons.pool,javax.naming.spi, version=1.4.0}
+   package:{package=org.apache.commons.dbcp, uses:=org.apache.commons.pool.impl,org.apache.commons.pool,javax.sql,javax.naming,javax.naming.spi,org.apache.commons.jocl,org.xml.sax, version=1.4.0}
+   package:{package=org.apache.commons.dbcp.managed, uses:=org.apache.commons.dbcp,javax.sql,org.apache.commons.pool.impl,javax.transaction,org.apache.commons.pool,javax.transaction.xa, version=1.4.0}
+   package:{package=org.apache.commons.dbcp.datasources, uses:=javax.sql,org.apache.commons.pool,javax.naming,org.apache.commons.dbcp,javax.naming.spi,org.apache.commons.pool.impl, version=1.4.0}
+   package:{package=org.apache.commons.jocl, uses:=org.xml.sax.helpers,org.xml.sax, version=1.4.0}
+
+----
+
+We can see that commons-dbcp requires org.apache.commons.pool package (between version 1.3.0 and 2.0.0).
+
+If we take a look on commons-pool bundle details:
+
+----
+karaf@root()> obr:info org.apache.servicemix.bundles.commons-pool
+--------------------------------------------
+Apache ServiceMix :: Bundles :: commons-pool
+--------------------------------------------
+id: org.apache.servicemix.bundles.commons-pool/1.5.4.3
+description: This OSGi bundle wraps commons-pool 1.5.4 jar file.
+documentation: http://www.apache.org/
+symbolicname: org.apache.servicemix.bundles.commons-pool
+presentationname: Apache ServiceMix :: Bundles :: commons-pool
+license: http://www.apache.org/licenses/LICENSE-2.0.txt
+uri: file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/org.apache.servicemix.bundles.commons-pool-1.5.4.3.jar
+size: 97332
+version: 1.5.4.3
+Capabilities:
+   bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-pool, presentationname=Apache ServiceMix :: Bundles :: commons-pool, version=1.5.4.3}
+   package:{package=org.apache.commons.pool.impl, uses:=org.apache.commons.pool, version=1.5.4}
+   package:{package=org.apache.commons.pool, version=1.5.4}
+----
+
+This bundle provides package org.apache.commons.pool capability.
+
+It means that if I deploy the commons-dbcp bundle, the OBR should also install the commons-pool bundle:
+
+----
+karaf@root()> obr:deploy org.apache.servicemix.bundles.commons-dbcp
+Target resource(s):
+-------------------
+   Apache ServiceMix :: Bundles :: commons-dbcp (1.4.0.3)
+
+Required resource(s):
+---------------------
+   Apache ServiceMix :: Bundles :: commons-pool (1.5.4.3)
+
+Deploying...done.
+----
+
+Done: the OBR has resolved the commons-dbcp requirements using the commons-pool capabilities and so installed the
+commons-pool bundle.
+
+NB: in the `obr:deploy` command, if you don't mention the version, it will take the highly version available.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/user-guide/populate-repository.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/user-guide/populate-repository.adoc b/manual/src/main/asciidoc/user-guide/populate-repository.adoc
new file mode 100644
index 0000000..fcb3b5c
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/populate-repository.adoc
@@ -0,0 +1,66 @@
+//
+// 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.
+
+=== Upload a single artifact
+
+You can upload a single artifact into a Cave Repository:
+
+----
+karaf@root()> cave:repository-upload-artifact my-repository file:/home/jbonofre/.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-artifact 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
+----
+
+You can also use Maven style URL:
+
+----
+karaf@root()> cave:repository-upload-artifact my-repository mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/1.7.0_5
+----
+
+=== Populate from an external repository
+
+You can also make a kind of "bulk" population of your repository, using an external repository:
+
+----
+karaf@root()> cave:repository-populate my-repository file:/home/jbonofre/.m2/repository
+----
+
+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:
+
+----
+karaf@root()> cave:repository-populate my-repository http://repo1.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.ant/
+----
+
+You can also populate with the whole Central Maven Repository:
+
+----
+karaf@root()> cave:repository-populate my-repository http://repo1.maven.org/maven2
+----
+
+*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.*
+
+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:
+
+----
+karaf@root()> cave:repository-populate --filter .*joda-time-2.* my-repository http://repo2.maven.org/maven2/joda-time/joda-time
+----
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/user-guide/proxy-repository.adoc
----------------------------------------------------------------------
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..ae56768
--- /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 link::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 OBR 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 OBR 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:proxy-repository` command accepts the filter option, as the `cave:populate-repository` command:
+
+----
+karaf@root()> cave:repository-proxy --filter .*joda-time-2.* my-repository http://repo2.maven.org/maven2/joda-time/joda-time
+----
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/user-guide/user-index.adoc
----------------------------------------------------------------------
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..0f6eca7
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/user-index.adoc
@@ -0,0 +1,23 @@
+Apache Karaf Cave 3.x - User Guide
+===================================
+Apache Software Foundation
+:doctype: book
+:toc: left
+:toclevels: 3
+:toc-position: left
+:toc-title: Apache Karaf Cave 3.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/obr-commands.adoc[]
+
+include::user-guide/http-wrapper.adoc[]
+
+include::user-guide/administrate-cave.adoc[]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/WEB-INF/scalate/layouts/default.scaml
----------------------------------------------------------------------
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")

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/WEB-INF/scalate/layouts/print.ssp
----------------------------------------------------------------------
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>

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
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>

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/index.conf
----------------------------------------------------------------------
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

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/manual.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/manual.conf b/manual/src/main/webapp/manual.conf
deleted file mode 100644
index 656bc29..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 2013 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/obr-commands}
-{include:/user-guide/http-wrapper}
-{include:/user-guide/administrate-cave}

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/overview.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/overview.conf b/manual/src/main/webapp/overview.conf
deleted file mode 100644
index a1bd6fc..0000000
--- a/manual/src/main/webapp/overview.conf
+++ /dev/null
@@ -1,26 +0,0 @@
-h1. Apache Karaf Cave overview
-
-Apache Karaf Cave is an Apache Karaf sub-project.
-
-It provides an OSGi Bundle Repository (OBR) and Karaf Features Repository (KFR).
-
-OBR provides a service that can automatically install a bundle, with its deployment dependencies, from a bundle
-repository.
-
-Apache Karaf Cave provides the following features:
-
-* *Storage*: Karaf Cave includes a storage backend. The default one is a simple filesystem backend. As the Cave backend
-is designed in a plugin way, you can implement your own backend (for instance, JDBC or LDAP backend).
-* *OBR Metadata Generation*: Karaf Cave automatically creates the OBR metadata for you, using the artifacts presents
-in the Cave repository storage.
-* *OBR Registration*: Karaf Cave allows you to directly register a Cave repository into an OBR RepositoryAdmin OSGi
-service.
-* *Artifact Upload*: Users can upload OSGi bundle in a Cave repository. It supports URLs like mvn:groupId/artifactId/version,
-file:, http:, etc.
-* *Repository proxy*: Karaf Cave is able to proxy an existing repository, for instance an existing Maven repository.
-The artifacts are located on the "external" repository, Cave handles the OBR metadata. Cave supports file: and http:
-URLs, it means that Cave is able to browse a remote HTTP Maven repository for instance.
-* *Repository population*: Karaf Cave is able to get artifacts present on an "external" repository (local file: or
-remote http:), looking for OSGi bundles, and copy the artifacts in the Cave repository storage.
-
-The {{cave-server}} feature provides the OBR and KFR server, including the storage backend, management layer and shell commands.

http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/user-guide/administrate-cave.conf
----------------------------------------------------------------------
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 6c3b30b..0000000
--- a/manual/src/main/webapp/user-guide/administrate-cave.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-h1. Administration
-
-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 generateObr, 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 generateObr, String filter) throws Exception;
-* void proxyRepository(String name, String url, boolean generateObr, String filter) throws Exception;
-* void updateRepository(String name) throws Exception;
-* void uploadArtifact(String repository, String artifactUrl, boolean generateObr) throws Exception;
\ No newline at end of file