<?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/maven-v4_0_0.xsd">
	<parent>
		<artifactId>turbine-parent</artifactId>
		<groupId>org.apache.turbine</groupId>
		<version>6</version>
	</parent>

	<modelVersion>4.0.0</modelVersion>
	<artifactId>fulcrum-bsf</artifactId>
	<groupId>org.apache.fulcrum</groupId>
	<version>1.0.3-SNAPSHOT</version>
	<name>Fulcrum BSF</name>
	<inceptionYear>2005</inceptionYear>
	<description>Fulcrum BSF Service</description>
	<url>http://turbine.apache.org/fulcrum/fulcrum-bsf</url>

	<scm>
		<connection>scm:svn:http://svn.apache.org/repos/asf/turbine/fulcrum/trunk/bsf/</connection>
		<developerConnection>scm:svn:https://svn.apache.org/repos/asf/turbine/fulcrum/trunk/bsf/</developerConnection>
		<url>http://svn.apache.org/viewvc/turbine/fulcrum/trunk/bsf/</url>
	</scm>

	<distributionManagement>
		<site>
			<id>apache.website</id>
			<name>Fulcrum Website</name>
			<url>${fulcrum.deployment.protocol}://people.apache.org/www/turbine.apache.org/fulcrum/fulcrum-bsf/</url>
		</site>
	</distributionManagement>

	<developers>
		<developer>
			<name>Eric Pugh</name>
			<id>epugh</id>
			<email>epugh@upstate.com</email>
		</developer>
		<developer>
			<name>Henning P. Schmiedehausen</name>
			<id>henning</id>
			<email>hps@intermeta.de</email>
			<organization>INTERMETA - Gesellschaft fuer Mehrwertdienste mbH</organization>
			<roles>
				<role>Java Developer</role>
			</roles>
		</developer>
		<developer>
			<name>Siegfried Goeschl</name>
			<id>sgoeschl</id>
			<email>sgoeschl@apache.org</email>
			<organization />
			<roles>
				<role>Java Developer</role>
			</roles>
		</developer>
		<developer>
			<name>Thomas Vandahl</name>
			<id>tv</id>
			<email>tv@apache.org</email>
			<organization />
			<roles>
				<role>Java Developer</role>
			</roles>
		</developer>
	</developers>

	<dependencies>
		<dependency>
			<groupId>bsf</groupId>
			<artifactId>bsf</artifactId>
			<version>2.4.0</version>
		</dependency>

		<dependency>
			<groupId>org.apache.avalon.framework</groupId>
			<artifactId>avalon-framework-api</artifactId>
			<version>4.3.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.fulcrum</groupId>
			<artifactId>fulcrum-factory</artifactId>
			<version>1.1.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.fulcrum</groupId>
			<artifactId>fulcrum-testcontainer</artifactId>
			<version>1.0.8</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.fulcrum</groupId>
			<artifactId>fulcrum-yaafi</artifactId>
			<version>1.0.8</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<sourceDirectory>${basedir}/src/java</sourceDirectory>
		<testSourceDirectory>${basedir}/src/test</testSourceDirectory>

		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>${maven.compiler.source}</source>
					<target>${maven.compiler.target}</target>
				</configuration>
			</plugin>
		</plugins>
	</build>

	<profiles>
		<profile>
			<id>rc</id>
			<distributionManagement>
				<!-- Cannot define in parent ATM, see COMMONSSITE-26 -->
				<site>
					<id>apache.website</id>
					<name>Apache Fulcrum Release Candidate Staging Site</name>
					<url>${fulcrum.deployment.protocol}://people.apache.org/www/turbine.apache.org/builds/fulcrum/${fulcrum.componentid}/${fulcrum.release.version}/${fulcrum.rc.version}/site</url>
				</site>
			</distributionManagement>
		</profile>
	</profiles>


	<properties>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.source>1.8</maven.compiler.source>

		<!-- This bits are used for the staging directory -->
		<fulcrum.release.version>1.0.3-SNAPSHOT</fulcrum.release.version>
		<fulcrum.rc.version>RC1</fulcrum.rc.version>
		<fulcrum.deployment.protocol>scpexe</fulcrum.deployment.protocol>
	</properties>

</project>
