<?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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.apache.clerezza</groupId>
		<artifactId>clerezza</artifactId>
		<version>0.5</version>
		<relativePath>../parent</relativePath>
	</parent>
	<artifactId>ext.virtuoso.jdbc</artifactId>
	<name>Clerezza Ext - Virtuoso JDBC OSGi Bundle</name>
	<description>Virtuoso JDBC</description>
		<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>
		<dependency>
			<groupId>virtuoso</groupId>
			<artifactId>virtjdbc</artifactId>
			<type>jar</type>
			<version>4.1</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<extensions>true</extensions>
				<configuration>
					<instructions>
						<Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
						<Embed-Dependency>*;scope=compile;artifactId=!slf4j-api</Embed-Dependency>
						<!-- Embed-Transitive>true</Embed-Transitive -->
						<!-- Import-Package> </Import-Package -->
						<Export-Package>
							openlink.util.*,
							virtuoso.javax.*,
							virtuoso.jdbc4.*,
							virtuoso.sql.*
						</Export-Package>
					</instructions>
				</configuration>
			</plugin>
		</plugins>
		<pluginManagement>
			<plugins>
				<!--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>
	<packaging>bundle</packaging>
	<profiles>
		<profile>
			<!-- This profile allows for installing/updating a bundle in a running 
				Sling instance right after building it. Example: mvn clean install -P installBundle 
				-Dsling.url=http://localhost:8080/system/console Or, to make it faster without 
				cleaning up or running tests: mvn -o install -DskipTests -P installBundle 
				-Dsling.url=http://localhost:8080/system/console -->
			<id>installBundle</id>
			<activation>
				<activeByDefault>false</activeByDefault>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.sling</groupId>
						<artifactId>maven-sling-plugin</artifactId>
						<executions>
							<execution>
								<id>install-bundle</id>
								<goals>
									<goal>install</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
