<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.myfaces.extensions.scripting</groupId>
    <artifactId>extscript-myfaces12-bundle</artifactId>
    <packaging>jar</packaging>
    <name>MyFaces Extension Scripting MyFaces 1.2 convenience meta bundle</name>
    <version>1.0.2-SNAPSHOT</version>

    <description>
        The meta bundle bundeling all needed core runtimes
        for a full myfaces 1.2.8+ build
    </description>

    <parent>
        <groupId>org.apache.myfaces.extensions.scripting</groupId>
        <artifactId>extscript-bundles</artifactId>
        <version>1.0.2-SNAPSHOT</version>
    </parent>

    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/myfaces/extensions/scripting/trunk/extscript-bundles/extscript-myfaces12-bundle</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/myfaces/extensions/scripting/trunk/extscript-bundles/extscript-myfaces12-bundle</developerConnection>
        <url>http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-bundles/extscript-myfaces12-bundle</url>
    </scm>

    <dependencies>
        <dependency>
            <groupId>org.apache.myfaces.extensions.scripting</groupId>
            <artifactId>extscript-core</artifactId>
            <version>1.0.2-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.myfaces.extensions.scripting</groupId>
            <artifactId>extscript-core-java6</artifactId>
            <version>1.0.2-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.myfaces.extensions.scripting</groupId>
            <artifactId>extscript-myfaces12-extensions</artifactId>
            <version>1.0.2-SNAPSHOT</version>
        </dependency>
    </dependencies>

    <!-- we use the maven shade plugin to bundle our subprojects into bundles -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>1.3.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <artifactSet>
                        <includes>
                            <artifact>org.apache.myfaces.extensions.scripting:extscript-core</artifact>
                            <artifact>org.apache.myfaces.extensions.scripting:extscript-core-java6</artifact>
                            <artifact>org.apache.myfaces.extensions.scripting:extscript-myfaces12-extensions</artifact>
                        </includes>
                    </artifactSet>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>
