<?xml version="1.0" encoding="UTF-8"?>
<!--
/*
 * Copyright 2001-2004 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.
 */
 -->
<project  default="multiproject:install">
  <modelVersion>4.0.0</modelVersion>
  <artifactId>scout</artifactId>
  <name>Apache Scout</name>
  <groupId>org.apache.ws.scout</groupId>
  <version>0.7rc2</version>
  <packaging>pom</packaging>
  <inceptionYear>2004</inceptionYear>
  <!-- any mailing lists for the project -->
  <mailingLists>
    <mailingList>
      <name>Scout Developer List</name>
      <subscribe>scout-dev-subscribe@ws.apache.org</subscribe>
      <unsubscribe>scout-dev-unsubscribe@ws.apache.org</unsubscribe>
      <archive>http://nagoya.apache.org/eyebrowse/SummarizeList?listId=221</archive>
    </mailingList>
  </mailingLists>
 <!-- who the developers are for the project -->
  <developers>
    <developer>
      <name>Anil Saldhana</name>
      <id>anil</id>
      <email>anil@apache.org</email>
      <organization></organization>
    </developer>
    <developer>
      <name>Davanum Srinivas</name>
      <id>dims</id>
      <email>dims@yahoo.com</email>
      <organization></organization>
    </developer>
    <developer>
      <name>Geir Magnusson Jr.</name>
      <id>geirm</id>
      <email>geirm@apache.org</email>
      <organization/>
    </developer>
    <developer>
      <name>Jeremy Boynes</name>
      <id>jboynes</id>
      <email>jboynes@apache.org</email>
      <organization/>
    </developer>
  </developers>
 
  <modules>
    <module>modules/scout</module>
  </modules>
</project>
