<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.apache.tapestry</groupId>
    <artifactId>tutorial1</artifactId>
    <packaging>war</packaging>
    <name>Tapestry 5 Tutorial</name>
    <description>Introductory topics in Tapestry application development.</description>
    <organization>
        <name>Apache Software Foundation</name>
        <url>http://www.apache.org</url>
    </organization>

    <scm>
        <connection>scm:svn:https://svn.apache.org/repos/asf/tapestry/tapestry5/tags/releases/5.2.3</connection>
        <url>scm:svn:https://svn.apache.org/repos/asf/tapestry/tapestry5/tags/releases/5.2.3</url>
      <developerConnection>scm:svn:https://svn.apache.org/repos/asf/tapestry/tapestry5/tags/releases/5.2.3</developerConnection>
  </scm>

    <parent>
        <groupId>org.apache.tapestry</groupId>
        <artifactId>tapestry-project</artifactId>
        <version>5.2.3</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.apache.tapestry</groupId>
            <artifactId>tapestry-hibernate</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <version>1.8.0.7</version>
        </dependency>


        <!-- A dependency on either JUnit or TestNG is required, or the surefire plugin (which runs the tests)
will fail, preventing Maven from packaging the WAR. Tapestry includes a large number
of testing facilities designed for use with TestNG (http://testng.org/), so it's recommended. -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>5.12.1</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymock</artifactId>
            <version>2.4</version>
            <scope>test</scope>
        </dependency>

    </dependencies>
    <build>
        <finalName>tapestry-tutorial1</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                    <optimize>true</optimize>
                </configuration>
            </plugin>

            <!-- Run the application using "mvn jetty:run" -->
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.9</version>
                <configuration>
                    <!-- Log to the console. -->
                    <requestLog implementation="org.mortbay.jetty.NCSARequestLog">
                        <!-- This doesn't do anything for Jetty, but is a workaround for a Maven bug
                 that prevents the requestLog from being set. -->
                        <append>true</append>
                    </requestLog>
                </configuration>
            </plugin>


            <!-- This changes the WAR file packaging so that what would normally go into WEB-INF/classes
     is instead packaged as WEB-INF/lib/tutorial1.jar.  This is necessary for Tapestry
     to be able to search for page and component classes at startup. Only
     certain application servers require this configuration, please see the documentation
     at the Tapestry 5 project page (http://tapestry.apache.org/tapestry5/). -->

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <archiveClasses>true</archiveClasses>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <reporting>

        <!-- Adds a report detailing the components, mixins and base classes defined by this module. -->
        <plugins>
            <plugin>
                <groupId>org.apache.tapestry</groupId>
                <artifactId>tapestry-component-report</artifactId>
                <version>${project.version}</version>
                <configuration>
                    <rootPackage>org.apache.tapestry5.tutorial</rootPackage>
                </configuration>
            </plugin>
        </plugins>
    </reporting>

</project>
