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

 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>
        <artifactId>clerezza</artifactId>
        <groupId>org.apache.clerezza</groupId>
        <version>0.5</version>
        <relativePath>../parent</relativePath>
	</parent>
	<artifactId>rdf.virtuoso.storage</artifactId>
	<name>Clerezza - SCB Virtuoso storage provider</name>
	<description>A virtuoso based storage provider</description>
	<packaging>bundle</packaging>
	<version>1.0.0-SNAPSHOT</version>
	
    <repositories>
		<repository>
			<releases>
				<updatePolicy>always</updatePolicy>
			</releases>
			<snapshots>
				<updatePolicy>always</updatePolicy>
			</snapshots>
			<id>virtuoso-jdbc4-embedded</id>
			<url>file://localhost/${project.basedir}/src/main/resources/maven/repo</url>
		</repository>
	</repositories>
	<dependencies>
		<!-- CLEREZZA -->
		<dependency>
			<groupId>org.apache.clerezza</groupId>
			<artifactId>rdf.core</artifactId>
			<version>0.14</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.wymiwyg</groupId>
			<artifactId>wymiwyg-commons-core</artifactId>
		</dependency>
		<!-- VIRTUOSO Dependencies -->
		<dependency>
			<groupId>org.apache.clerezza</groupId>
			<artifactId>ext.virtuoso.jdbc</artifactId>
			<version>0.3</version>
			<scope>provided</scope>
		</dependency>

		<!-- OSGI -->
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>org.osgi.core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>org.osgi.compendium</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.felix</groupId>
			<artifactId>org.apache.felix.scr.annotations</artifactId>
		</dependency>

		<!-- LOGGING -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<scope>test</scope>
		</dependency>
    
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>14.0</version>
        </dependency>

		<!-- TEST (generic) -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
 		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<scope>test</scope>
			<version>1.6.1</version>
		</dependency>
<!--
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-simple</artifactId>
			<scope>test</scope>
		</dependency>
-->	
	 <dependency>
	 	<groupId>org.apache.clerezza</groupId>
	 	<artifactId>platform.config</artifactId>
	 	<version>0.4</version>
	 	<type>bundle</type>
	 	<scope>test</scope>
	 </dependency>
	 <dependency>
	 	<groupId>org.apache.clerezza</groupId>
	 	<artifactId>rdf.jena.parser</artifactId>
	 	<version>0.12</version>
	 	<type>bundle</type>
	 	<scope>test</scope>
	 </dependency>
	 <dependency>
	 	<groupId>com.hp.hpl.jena</groupId>
	 	<artifactId>jena</artifactId>
	 	<version>2.6.4</version>
	 	<scope>test</scope>
	 	<exclusions>
		 	<exclusion>
	          <groupId>org.slf4j</groupId>
	          <artifactId>slf4j-log4j12</artifactId>
	        </exclusion>
	 	</exclusions>
	 </dependency>
	 <dependency>
	 	<groupId>org.apache.clerezza</groupId>
	 	<artifactId>rdf.jena.facade</artifactId>
	 	<version>0.14</version>
	 	<type>bundle</type>
	 	<scope>test</scope>
	 </dependency>
	 <dependency>
	 	<groupId>org.apache.clerezza</groupId>
	 	<artifactId>rdf.jena.commons</artifactId>
	 	<version>0.7</version>
	 	<type>bundle</type>
	 	<scope>test</scope>
	 </dependency>
	</dependencies>

	<profiles>
		<profile>
			<id>virtuoso-skip-tests</id>
			<activation>
				<property>
					<name>!virtuoso.test</name>
				</property>
			</activation>
		<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>**/**</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-scr-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
		</profile>
	</profiles>
	<build>
	   <plugins>
	   	<plugin>
				<artifactId>maven-surefire-plugin</artifactId>
				<executions>
					<execution>
						<id>virtuoso-tests</id>
						<phase>test</phase>
						<goals>
							<goal>test</goal>
						</goals>
						<configuration>
							<systemPropertyVariables>
								<virtuoso.test>${virtuoso.test}</virtuoso.test>
								<virtuoso.driver>virtuoso.jdbc4.Driver</virtuoso.driver>
								<virtuoso.host>localhost</virtuoso.host>
								<virtuoso.port>1111</virtuoso.port>
								<virtuoso.user>dba</virtuoso.user>
								<virtuoso.password>dba</virtuoso.password>
							</systemPropertyVariables>
						</configuration>
					</execution>
				</executions>
			</plugin>
		
	       <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-scr-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>generate-scr-scrdescriptor</id>
                            <goals>
                                <goal>scr</goal>
                            </goals>
                        </execution>
                    </executions>
                    <!-- see http://felix.apache.org/site/apache-felix-scr-plugin-faq.html#ApacheFelixSCRPluginFAQ-NoClassDefFoundErrorduringbuild -->
                    <dependencies>
                        <dependency>
                            <groupId>org.slf4j</groupId>
                            <artifactId>slf4j-simple</artifactId>
                            <version>1.6.1</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <extensions>true</extensions>
                    <configuration>
                        <instructions>
                            <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
                        </instructions>
                    </configuration>
                </plugin>
	   </plugins>
		<pluginManagement>
			<plugins>
			 
				<!--  plugin>
					<groupId>org.apache.felix</groupId>
					<artifactId>maven-bundle-plugin</artifactId>
					<extensions>true</extensions>
					<configuration>
						<instructions>
							<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
							<Embed-Dependency>*;scope=compile|runtime;artifactId=!slf4j-api</Embed-Dependency>
							<Import-Package>*</Import-Package>
							<Export-Package>
								rdf.virtuoso.storage.*
							</Export-Package>
						</instructions>
					</configuration>
				</plugin -->

				<!--This plugin's configuration is used to store Eclipse m2e settings 
					only. It has no influence on the Maven build itself. -->
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>
											org.apache.felix
										</groupId>
										<artifactId>
											maven-scr-plugin
										</artifactId>
										<versionRange>
											[1.7.0,)
										</versionRange>
										<goals>
											<goal>scr</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore />
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</project>
