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

  <modelVersion>4.0.0</modelVersion>
  <groupId>org.apache.fulcrum</groupId>
  <artifactId>fulcrum-factory</artifactId>
  <version>1.1.2-SNAPSHOT</version>
  <name>Fulcrum Factory</name>
  <inceptionYear>2005</inceptionYear>
  <description>Fulcrum Factory Service</description>
  <url>http://turbine.apache.org/fulcrum/fulcrum-factory</url>
		
  <!-- Required for staging to work -->
  <distributionManagement>
    <site>
      <id>turbine.apache.org</id>
      <url>https://turbine.apache.org/fulcrum/fulcrum-factory/</url>
    </site>
  </distributionManagement>

  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/turbine-fulcrum-factory.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/turbine-fulcrum-factory.git</developerConnection>
    <url>https://github.com/apache/${turbine.site.path}/tree/${project.scm.tag}</url>
    <tag>HEAD</tag>
  </scm>

  <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>org.apache.avalon.framework</groupId>
      <artifactId>avalon-framework-api</artifactId>
      <version>4.3.1</version>
    </dependency>    
    <!-- testing dependencies -->
    <dependency>
      <groupId>org.apache.fulcrum</groupId>
      <artifactId>fulcrum-testcontainer</artifactId>
      <version>1.0.9</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>
  </build>

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