<?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>8</version>
	</parent>

	<modelVersion>4.0.0</modelVersion>
	<artifactId>fulcrum-spring</artifactId>
	<groupId>org.apache.fulcrum</groupId>
	<version>1.0.1-SNAPSHOT</version>
	<name>Fulcrum Spring</name>
	<inceptionYear>2008</inceptionYear>
	<description>Fulcrum Spring Container Integration Service</description>
	<url>http://turbine.apache.org/fulcrum/fulcrum-spring</url>

	  <!-- Required for staging to work -->
	  <distributionManagement>
	     <site>
		<id>turbine.apache.org</id>
		<url>https://turbine.apache.org/fulcrum/fulcrum-spring/</url>
	     </site>
	  </distributionManagement>

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

	<developers>
		<developer>
			<name>Siegfried Goeschl</name>
			<id>sgoeschl</id>
			<email>sgoeschl@apache.org</email>
			<organization />
			<roles>
				<role>Java Developer</role>
			</roles>
		</developer>
	</developers>

	<dependencies>
		<!-- Avalon dependencies -->
		<dependency>
			<groupId>org.apache.avalon.framework</groupId>
			<artifactId>avalon-framework-api</artifactId>
			<version>4.3.1</version>
		</dependency>
		<!-- The YaafiContainerBean requires YAAFI -->
		<dependency>
			<groupId>org.apache.fulcrum</groupId>
			<artifactId>fulcrum-yaafi</artifactId>
			<version>1.0.8</version>
			<optional>true</optional>
		</dependency>
		<!-- Spring depedencies - these are optional so you have to declare your 
			Spring dependency manually -->
		<!-- <dependency> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> 
			<version>2.5.6</version> <optional>true</optional> <exclusions> <exclusion> 
			<groupId>javax.mail</groupId> <artifactId>mail</artifactId> </exclusion> 
			</exclusions> </dependency> -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
			<optional>true</optional>
		</dependency>
		<!-- testing dependencies -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.13.2</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

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

	<properties>
           <turbine.site.path>fulcrum/fulcrum-spring</turbine.site.path>
           <turbine.scmPubCheckoutDirectory>${turbine.site.cache}/fulcrum/spring</turbine.scmPubCheckoutDirectory>
           <turbine.site.cache>${project.build.directory}/turbine-sites</turbine.site.cache>
           <siteContent.path>${project.build.directory}/staging</siteContent.path><!-- default stagingSiteURL -->

           <spring.version>4.3.30.RELEASE</spring.version>
	</properties>

</project>
