<?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>
    <groupId>org.apache.turbine</groupId>
    <artifactId>turbine-parent</artifactId>
    <version>8</version>
    <relativePath />
  </parent>

  <modelVersion>4.0.0</modelVersion>
  <groupId>org.apache.fulcrum</groupId>
  <artifactId>fulcrum-crypto</artifactId>
  <version>1.0.9-SNAPSHOT</version>
  <name>Fulcrum Crypto</name>
  <inceptionYear>2005</inceptionYear>
  <description>Fulcrum Crypto Service</description>
  <url>http://turbine.apache.org/fulcrum/fulcrum-crypto</url>
  
  <!-- Required for staging to work -->
    <distributionManagement>
        <site>
            <id>turbine.apache.org</id>
            <url>https://turbine.apache.org/fulcrum/fulcrum-crypto/</url>
        </site>
    </distributionManagement>
		
  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/turbine-fulcrum-crypto.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/turbine-fulcrum-crypto.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>
  </developers>

  <dependencies>
    <dependency>
      <groupId>org.apache.avalon.framework</groupId>
      <artifactId>avalon-framework-api</artifactId>
      <version>4.3.1</version>
    </dependency>
	<dependency>
	    <groupId>commons-codec</groupId>
	    <artifactId>commons-codec</artifactId>
	    <version>1.13</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-crypto</turbine.site.path>
    <turbine.scmPubCheckoutDirectory>${turbine.site.cache}/fulcrum/crypto</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>
