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