<?xml version="1.0"?>
<project>
<!-- 
/*
 * Copyright 2001-2005 The Apache Software Foundation.
 * 
 * Licensed 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.
 */
 -->


  <extend>build/project.xml</extend>
  <groupId>struts</groupId>
  <artifactId>struts-site</artifactId>
  <name>Struts Site</name>

    <!-- ################################################################ -->
    <!--        Project management section                                -->
    <!-- ################################################################ -->

  <description>
    Struts Site is the Apache Struts home page, 
    the top-level portal to all other Struts frameworks and subprojects. 
  </description>

  <siteAddress>people.apache.org</siteAddress>
  <siteDirectory>/www/struts.apache.org/</siteDirectory>

  <repository>
    <connection>scm|svn|http://svn.apache.org/repos/asf/struts/site/trunk</connection>
    <developerConnection>scm|svn|https://svn.apache.org/repos/asf/struts/site/trunk</developerConnection>
    <url>http://svn.apache.org/repos/asf/struts/site/trunk</url>
  </repository>
  
</project>
