<?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">
  <!-- the version of maven's project object model -->

  <pomVersion>3</pomVersion>
  <!-- a unique name for this project -->
  <id>scout</id>
  <groupId>scout</groupId>
  <!-- a short but descriptive name for the project -->

  <name>Apache Scout</name>
  <!-- The version of the project under development, e.g.
       1.1, 1.2, 2.0-SNAPSHOT -->

  <currentVersion>0.7rc1</currentVersion>
  <!-- details about the organization that 'owns' the project -->

  <organization>
    <name>Apache Web Services</name>
    <url>http://ws.apache.org/</url>
    <logo>http://ws.apache.org/images/project-logo.jpg</logo>
  </organization>
  <!-- the year the project started -->

  <inceptionYear>2004</inceptionYear>
  <package>org.apache.ws.scout</package>
  <logo>/images/scout.jpg</logo>
  <description>
    Apache Scout is an implementation of the JSR 93 (JAXR)
  </description>
  <!-- a short description of what the project does -->

  <shortDescription>Implementation of the JSR 93 - JAXR 1.0</shortDescription>
  <!-- the project home page -->

  <url>http://ws.apache.org/scout/</url>
  <issueTrackingUrl>http://issues.apache.org/jira/</issueTrackingUrl>
  <siteAddress>ws.apache.org</siteAddress>
  <siteDirectory>/scout/</siteDirectory>
  <distributionDirectory>/www/ws.apache.org/builds/</distributionDirectory>
  <!-- the version control repository and http url for online access
       the connection element has the form:
       scm:<system>:<system specific connection string> -->

  <repository>
    <connection>scm:subversion:http://svn.apache.org/repos/asf/webservices/scout/trunk</connection>
    <url>http://svn.apache.org/viewcvs.cgi/webservices/scout/trunk/?root=Apache-SVN</url>
  </repository>
  <!-- any mailing lists for the project -->

  <!-- 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>Steve Viens</name>
            <id>sviens</id>
            <email>sviens@apache.org</email>
            <organization></organization>
        </developer>
        <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>

  <build>
    <nagEmailAddress>scout-dev@ws.apache.org</nagEmailAddress>
    <sourceDirectory>src/java</sourceDirectory>
    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
    <unitTest>
      <includes>
        <include>**/*Test.java</include>
      </includes>
      <excludes>
        <exclude>**/NaughtyTest.java</exclude>
      </excludes>
    </unitTest>
    <resources>
      <resource>
        <directory>src/conf</directory>
        <includes>
          <include>*.properties</include>
        </includes>
      </resource>
    </resources>
  </build>

    <!-- ======= -->
    <!-- Reports -->
    <!-- ======= -->

    <reports>
        <report>maven-license-plugin</report>
        <report>maven-checkstyle-plugin</report>
        <report>maven-pmd-plugin</report>
        <report>maven-jdepend-plugin</report>
        <report>maven-jxr-plugin</report>
        <report>maven-javadoc-plugin</report>
        <report>maven-junit-report-plugin</report>
        <report>maven-clover-plugin</report>
    </reports>
</project>
