<?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>
  <pomVersion>3</pomVersion>
  <name>SCXML</name>
  <groupId>commons-scxml</groupId> 
  <artifactId>commons-scxml</artifactId>
  <currentVersion>0.7</currentVersion>

  <inceptionYear>2005</inceptionYear>
  <shortDescription>Commons SCXML</shortDescription>
  <description>A Java Implementation of a State Chart XML Engine</description>

  <logo>/images/scxml-logo-white.png</logo>
  <url>http://commons.apache.org/scxml/</url>
  <package>org.apache.commons.scxml</package>

  <organization>
    <name>The Apache Software Foundation</name>
    <url>http://commons.apache.org/</url>
    <logo>http://commons.apache.org/images/logo.png</logo>
  </organization>
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name> 
      <url>/LICENSE.txt</url> 
      <distribution>repo</distribution> 
    </license>
  </licenses>

  <siteAddress>people.apache.org</siteAddress>
  <siteDirectory>/www/commons.apache.org/scxml/</siteDirectory>
  <issueTrackingUrl>http://issues.apache.org/jira/</issueTrackingUrl>
  <distributionDirectory>/www/people.apache.org/builds/commons/scxml/</distributionDirectory> 

  <repository>
    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/scxml/trunk</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/scxml/trunk</developerConnection>
    <url>http://svn.apache.org/viewvc/commons/proper/scxml/trunk</url>
  </repository>

  <mailingLists>
    <mailingList>
      <name>Commons Dev List</name>
      <subscribe>dev-subscribe@commons.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@commons.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/commons-dev/</archive>
    </mailingList>
    <mailingList>
      <name>Commons User List</name>
      <subscribe>user-subscribe@commons.apache.org</subscribe>
      <unsubscribe>user-unsubscribe@commons.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/commons-user/</archive>
    </mailingList>
  </mailingLists>

  <versions>
    <version>
      <id>0.5</id>
      <name>0.5</name>
      <tag>SCXML_0_5</tag>
    </version>
    <version>
      <id>0.6</id>
      <name>0.6</name>
      <tag>SCXML_0_6</tag>
    </version>
    <version>
      <id>0.7</id>
      <name>0.7</name>
      <tag>SCXML_0_7</tag>
    </version>
  </versions>

  <developers>
    <developer>
      <name>Rahul Akolkar</name>
      <id>rahul</id>
      <email>rahul AT apache.org</email>
      <organization>Apache Software Foundation</organization>
    </developer>
    <developer>
      <name>Martin Cooper</name>
      <id>martinc</id>
      <organization>Apache Software Foundation</organization>
    </developer>
  </developers>

  <contributors>
    <contributor>
      <name>Jaroslav Gergic</name>
    </contributor>
    <contributor>
      <name>Peter Costa</name>
    </contributor>
    <contributor>
      <name>Wendy Smoak</name>
    </contributor>
    <contributor>
      <name>Heiko Eichberger</name>
    </contributor>
    <contributor>
      <name>Niall Pemberton</name>
    </contributor>
    <contributor>
      <name>Sitthichai Rernglertpricha</name>
    </contributor>
    <contributor>
      <name>Nestor Urquiza</name>
    </contributor>
    <contributor>
      <name>Michael Heuer</name>
    </contributor>
    <contributor>
      <name>Ingmar Kliche</name>
    </contributor>
    <contributor>
      <name>Michael Tillberg</name>
    </contributor>
    <contributor>
      <name>Andy Bailey</name>
    </contributor>
  </contributors>
  
  <dependencies>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.1.1</version>
      <url>http://commons.apache.org/logging/</url>
      <properties>
        <comment>&lt;b&gt;Core&lt;/b&gt;
        (everything)</comment>
      </properties>
    </dependency>
    <dependency> 
      <groupId>commons-digester</groupId>
      <artifactId>commons-digester</artifactId>
      <version>1.8</version>
      <url>http://commons.apache.org/digester/</url>
      <properties>
        <comment>&lt;b&gt;Core&lt;/b&gt;
        (everything)</comment>
      </properties>
    </dependency>
    <dependency> 
      <groupId>commons-beanutils</groupId>
      <artifactId>commons-beanutils</artifactId>
      <version>1.7.0</version>
      <url>http://commons.apache.org/beanutils/</url>
      <properties>
        <comment>&lt;b&gt;Transitive&lt;/b&gt;
        (from Digester, so &lt;b&gt;core&lt;/b&gt;)</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <url>http://www.junit.org/</url>
      <properties>
        <comment>&lt;b&gt;Test&lt;/b&gt; only</comment>
        <scope>test</scope>
      </properties>
    </dependency>
    <dependency> 
      <groupId>commons-el</groupId>
      <artifactId>commons-el</artifactId>
      <version>1.0</version>
      <url>http://commons.apache.org/el/</url>
      <properties>
        <comment>&lt;b&gt;Usecases&lt;/b&gt;
        (JSP/JSF environments)</comment>
        <scope>provided</scope>
      </properties>
    </dependency>
    <dependency> 
      <groupId>commons-jexl</groupId>
      <artifactId>commons-jexl</artifactId>
      <version>1.1</version>
      <url>http://commons.apache.org/jexl/</url>
      <properties>
        <comment>&lt;b&gt;Usecases&lt;/b&gt;
        (JEXL environments)</comment>
        <optional>true</optional>
      </properties>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.4</version>
      <url>http://tomcat.apache.org/</url>
      <properties>
        <comment>&lt;b&gt;Usecases&lt;/b&gt;
        (Servlet/JSP environments)</comment>
        <scope>provided</scope>
      </properties>
    </dependency>
    <dependency> 
      <groupId>javax.servlet</groupId>
      <artifactId>jsp-api</artifactId> 
      <version>2.0</version>
      <url>http://tomcat.apache.org/</url>
      <properties>
        <comment>&lt;b&gt;Usecases&lt;/b&gt;
        (JSP environments)</comment>
        <scope>provided</scope>
      </properties>
    </dependency>
    <dependency> 
      <groupId>myfaces</groupId>
      <artifactId>myfaces-all</artifactId> 
      <version>1.1.0</version>
      <url>http://myfaces.apache.org/</url>
      <properties>
        <comment>&lt;b&gt;Usecases&lt;/b&gt;
        (JSF environments)</comment>
        <scope>provided</scope>
      </properties>
    </dependency>
    <dependency>
      <groupId>xalan</groupId>
      <artifactId>xalan</artifactId>
      <version>2.6.0</version>
      <url>http://xml.apache.org/xalan-j/</url>
      <properties>
        <comment>&lt;b&gt;Sun JDK 1.5&lt;/b&gt;
        only</comment>
        <optional>true</optional>
      </properties>
    </dependency>
    <dependency>
      <groupId>maven-plugins</groupId>
      <artifactId>maven-cobertura-plugin</artifactId>
      <version>1.1.1</version>
      <url>http://maven-plugins.sourceforge.net/maven-cobertura-plugin/</url>
      <type>plugin</type>
      <properties>
       <comment>&lt;b&gt;Site&lt;/b&gt; only</comment>
       <scope>test</scope>
      </properties>
    </dependency>
    <dependency>
      <groupId>maven</groupId>
      <artifactId>maven-xdoc-plugin</artifactId>
      <version>1.9.2</version>
      <url>http://maven.apache.org/reference/plugins/xdoc/</url>
      <type>plugin</type>
      <properties>
        <comment>&lt;b&gt;Site&lt;/b&gt; only</comment>
      </properties>
    </dependency>
  </dependencies>

  <build>
    <sourceDirectory>src/main/java</sourceDirectory>
    <resources>
      <resource>
        <targetPath>META-INF</targetPath>
        <includes>
          <include>NOTICE.txt</include>
        </includes>
      </resource>
    </resources>
    <unitTestSourceDirectory>src/test/java</unitTestSourceDirectory>
    <unitTest>
      <includes>
        <include>org/apache/commons/scxml/SCXMLTestSuite.java</include>
        <include>org/apache/commons/scxml/env/EnvTestSuite.java</include>
        <include>org/apache/commons/scxml/env/faces/EnvFacesTestSuite.java</include>
        <include>org/apache/commons/scxml/env/jexl/EnvJexlTestSuite.java</include>
        <include>org/apache/commons/scxml/env/jsp/EnvJspTestSuite.java</include>
        <include>org/apache/commons/scxml/env/servlet/EnvServletTestSuite.java</include>
        <include>org/apache/commons/scxml/invoke/InvokeTestSuite.java</include>
        <include>org/apache/commons/scxml/io/IOTestSuite.java</include>
        <include>org/apache/commons/scxml/model/ModelTestSuite.java</include>
        <include>org/apache/commons/scxml/semantics/SemanticsTestSuite.java</include>
        <include>org/apache/commons/scxml/test/TestingTestSuite.java</include>
      </includes>
      <resources>
        <resource>
          <directory>${pom.build.unitTestSourceDirectory}</directory>
          <includes>
            <include>**/*.xml</include>
            <include>**/*.gif</include>
          </includes>
        </resource>
      </resources>
    </unitTest>
  </build>

  <reports>
     <report>maven-changes-plugin</report>
     <report>maven-checkstyle-plugin</report>
     <report>maven-cobertura-plugin</report>
     <report>maven-faq-plugin</report>
     <report>maven-javadoc-plugin</report>
     <report>maven-junit-report-plugin</report>
     <report>maven-jxr-plugin</report>
     <report>maven-license-plugin</report>
  </reports>
  
</project>
