<?xml version="1.0"?>
<!--
/*
 * 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>
    <pomVersion>3</pomVersion>
    <id>Axis2</id>
    <groupId>C</groupId>
    <currentVersion>0.0</currentVersion>
    <name>Axis2 C Project</name>

    <!-- ################################################################ -->
    <!--        Project management section                                -->
    <!-- ################################################################ -->

    <organization>
        <name>Apache Software Foundation</name>
        <url>http://ws.apache.org/axis2/</url>
        <logo>http://ws.apache.org/axis/images/axis.jpg</logo>
    </organization>

    <inceptionYear>2005</inceptionYear>
    <package>axis2.*</package>
    <logo>http://ws.apache.org/axis/images/axis.jpg</logo>
    <description>Axis2/C is an effort to implement Axis2 architecture, the next generation Web Services platform, in C</description>
    <shortDescription>Axis2/C is an effort to implement Axis2 architecture in C</shortDescription>


    <url/>
    <issueTrackingUrl>http://issues.apache.org/jira/browse/AXISCPP</issueTrackingUrl>
    <siteAddress>ws.apache.org</siteAddress>
    <siteDirectory/>
    <distributionDirectory>/axis2/dist/${pom.artifactId}/</distributionDirectory>

    <!--
    <repository>
        <connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:maven</connection>
        <url>http://cvs.apache.org/viewcvs/maven/</url>
    </repository>
    -->

    <versions/>

    <mailingLists/>

    <developers>
    <developer>
      <name>Samisa Abeysinghe</name>
      <id>samisa</id>
      <email>samisa@apache.org</email>
      <organization>WSO2</organization>
      <roles>
        <role>C++ Developer</role>
      </roles>
    </developer>
    </developers>


    <!-- ################################################################ -->
    <!--        Project dependency section                                -->
    <!-- ################################################################ -->

    <dependencies/>


    <!-- ################################################################ -->
    <!--        Project build and reports section                         -->
    <!-- ################################################################ -->

    <build>

        <nagEmailAddress>axis-c-dev@apache.org</nagEmailAddress>
        <sourceDirectory>${basedir}/src</sourceDirectory>
        <unitTestSourceDirectory>${basedir}/src/test</unitTestSourceDirectory>

        <unitTest>
          <includes>
            <include>**/_test*.c</include>
          </includes>
          <excludes>
            <exclude>**/*Test*All.c</exclude>
          </excludes>
        </unitTest>

        <resources/>  <!-- (OPTIONAL) Resources packaged inside the JAR file. -->

    </build>

    <reports>
        <report>maven-checkstyle-plugin</report>
    </reports>

    <reports>
        <report>maven-changes-plugin</report>
        <report>maven-jdepend-plugin</report>
        <report>maven-checkstyle-plugin</report>
        <report>maven-pmd-plugin</report>
        <report>maven-junit-report-plugin</report>
        <report>maven-clover-plugin</report>
        <report>maven-changelog-plugin</report>
        <report>maven-file-activity-plugin</report>
        <report>maven-developer-activity-plugin</report>
        <report>maven-file-activity-plugin</report>
        <report>maven-license-plugin</report>
        <report>maven-linkcheck-plugin</report>
        <report>maven-jxr-plugin</report>
    </reports>

</project>
