<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>tapestry-ioc</artifactId>
    <packaging>jar</packaging>
    <!-- This should change to tapestry-project -->
    <parent>
        <groupId>org.apache.tapestry</groupId>
        <artifactId>tapestry-project</artifactId>
        <version>5.2.3</version>
    </parent>
    <name>Tapestry Inversion of Control Container</name>
    <description>
        A code-centric, high-performance, simple Inversion of Control
        container.
    </description>
    <inceptionYear>2006</inceptionYear>

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

        <dependency>
            <groupId>org.apache.tapestry</groupId>
            <artifactId>tapestry-func</artifactId>
            <version>${project.version}</version>
        </dependency>
        
        <dependency>
            <groupId>javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.12.1.GA</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.1</version>
        </dependency>

        <!-- SLF4J now supports earlier versions of Log4J more cleanly, but still nice to include
             a fully compatible version. -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.14</version>
        </dependency>

        <!-- 0.00001% of applications will need to override this dependency to not use Log4J. -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.1</version>
        </dependency>


        <!-- Override parent pom: needed at compile time. -->
        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymock</artifactId>
            <scope>provided</scope>
        </dependency>
        <!-- Override parent pom: needed at compile time. -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <!-- Looks like if you override scope, you have to provide version (and classifier) as well.
   Or perhaps this has something to do with classifier. -->
            <version>${testng-version}</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
            </plugin>
            <!-- This gets the plugin to clean up the cobertura.ser file left
        in the root directory. -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>${cobertura-plugin-version}</version>
                <executions>
                    <execution>
                        <id>clean</id>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>summary</report>
                            <report>dependencies</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>${cobertura-plugin-version}</version>
            </plugin>	    
	    <plugin>
		<groupId>org.codehaus.mojo</groupId>
		<artifactId>clirr-maven-plugin</artifactId>
		<configuration>
		    <comparisonVersion>5.1.0.5</comparisonVersion>
		    <excludes>
			<exclude>**/internal/**</exclude>
			<exclude>**/test/**</exclude>
		    </excludes>
		</configuration>
	    </plugin>
        </plugins>
    </reporting>
    <repositories>
        <repository>
            <!-- Needed to keep up with latest Javassist versions. -->
            <id>jboss</id>
            <url>https://repository.jboss.org/nexus/content/repositories/releases</url>
        </repository>
    </repositories>
</project>
