<?xml version="1.0" encoding="UTF-8"?>
<!--

 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.

-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.clerezza</groupId>
        <artifactId>clerezza</artifactId>
        <version>8-SNAPSHOT</version>
        <relativePath>../../parent</relativePath>
    </parent>
    
    <groupId>org.apache.clerezza.provisioning</groupId>
    <artifactId>rdf.web</artifactId>
    <version>1.0.1-SNAPSHOT</version>
    <packaging>feature</packaging>

    <name>Clerezza - Provisioning - RDF Web</name>
    <description>A Karaf feature and partialbundlelist with the bundles providing 
        web access to the Clerezza RDF stores.
    
        This feature depends on java and OSGi platform libraries (javax.xml,
        org.osgi.service.cm and others), slf4j logging
        - typerendering?
    </description>

    <dependencies>
        <dependency>
            <groupId>org.apache.clerezza</groupId>
            <artifactId>jaxrs.rdf.providers</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.clerezza</groupId>
            <artifactId>rdf.web.core</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.clerezza</groupId>
            <artifactId>rdf.web.ontologies</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.clerezza</groupId>
            <artifactId>jaxrs.utils</artifactId>
            <version>0.9</version>
        </dependency>
        <dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.clerezza</groupId>
            <artifactId>platform.globalmenu.api</artifactId>
            <version>0.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.clerezza</groupId>
            <artifactId>web.fileserver</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.wymiwyg.karaf.tooling</groupId>
                <artifactId>karaf-sling-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    
</project>
