<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>${groupId}</groupId>
    <artifactId>${artifactId}</artifactId>
    <version>${version}</version>
    <packaging>war</packaging>
    <name>${artifactId} Tapestry 5 Application</name>
    <dependencies>
        <dependency>
            <groupId>org.apache.tapestry</groupId>
            <artifactId>tapestry-core</artifactId>
            <version>${tapestry-release-version}</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.1</version>
            <classifier>jdk15</classifier>
            <scope>test</scope>
        </dependency>

    </dependencies>
    <build>
        <finalName>${artifactId}</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/${artifactId}.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>${tapestry-release-version}</version>
                <configuration>
                    <rootPackage>${packageName}</rootPackage>
                </configuration>
            </plugin>
        </plugins>
    </reporting>

    <repositories>
        <!-- This can be commented out when the tapestry-release-version is a not a snapshot.
 The non-snapshot Tapestry artifacts are distributed through the central
 repository at ibiblio.     -->

        <repository>
            <id>tapestry-snapshots</id>
            <url>http://tapestry.formos.com/maven-snapshot-repository/</url>
        </repository>

        <repository>
            <id>codehaus.snapshots</id>
            <url>http://snapshots.repository.codehaus.org</url>
        </repository>
        <repository>
            <id>OpenQA_Release</id>
            <name>OpenQA Release Repository</name>
            <url>http://archiva.openqa.org/repository/releases/</url>
        </repository>
    </repositories>

    <pluginRepositories>

        <!-- As above, this can be commented out when access to the snapshot version
of a Tapestry Maven plugin is not required.   -->
        <pluginRepository>
            <id>tapestry-snapshots</id>
            <url>http://tapestry.formos.com/maven-snapshot-repository/</url>
        </pluginRepository>


    </pluginRepositories>

    <properties>
        <tapestry-release-version>5.0.15</tapestry-release-version>
    </properties>
</project>
