<?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.8</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>
    <contributor>
      <name>Sebastian Bazley</name>
    </contributor>
    <contributor>
      <name>Ross Yakulis</name>
    </contributor>
    <contributor>
      <name>SeongSoo Park</name>
    </contributor>
    <contributor>
      <name>Tony Seebregts</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.2</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>org.apache.myfaces.core</groupId>
      <artifactId>myfaces-api</artifactId> 
      <version>1.1.5</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</groupId>
      <artifactId>maven-xdoc-plugin</artifactId>
      <version>1.9.2</version>
      <url>http://maven.apache.org/maven-1.x/plugins/xdoc/</url>
      <type>plugin</type>
      <properties>
        <comment>&lt;b&gt;Site&lt;/b&gt; only</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>maven</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>1.8</version>
      <url>http://maven.apache.org/maven-1.x/plugins/javadoc/</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/issues/IssuesTestSuite.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-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>
