<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">
    <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/trunk/tapestry-tutorial1/</connection>
        <url>http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-tutorial1/</url>
    </scm>

    <parent>
        <groupId>org.apache.tapestry</groupId>
        <artifactId>tapestry-project</artifactId>
        <version>5.0.15</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.7</version>
            <classifier>jdk15</classifier>
            <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>
