<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>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.5</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>
