<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
-->
<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>

    <parent>
        <groupId>org.apache.myfaces</groupId>
        <artifactId>myfaces</artifactId>
        <version>11</version>
    </parent>

    <groupId>org.apache.myfaces.extensions.cdi</groupId>
    <artifactId>myfaces-extcdi-parent</artifactId>
    <version>1.0.6-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>Apache MyFaces CODI</name>
    <url>http://myfaces.apache.org/extensions/cdi/</url>

    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/myfaces/extensions/cdi/trunk/</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/myfaces/extensions/cdi/trunk/</developerConnection>
        <url>http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/</url>
    </scm>

    <repositories>
        <repository>
            <id>Apache Snapshot Repository</id>
            <url>https://repository.apache.org/content/repositories/snapshots</url>
        </repository>
    </repositories>

    <distributionManagement>
        <site>
            <id>apache.website</id>
            <url>scpexe://people.apache.org/www/myfaces.apache.org/extensions/cdi</url>
        </site>
    </distributionManagement>

    <issueManagement>
        <system>jira</system>
        <url>http://issues.apache.org/jira/browse/EXTCDI</url>
    </issueManagement>

    <ciManagement>
        <system>continuum</system>
        <url>http://myfaces.zones.apache.org:8080/continuum</url>
        <notifiers>
            <notifier>
                <type>mail</type>
                <sendOnSuccess>true</sendOnSuccess>
                <configuration>
                    <address>commits@myfaces.apache.org</address>
                </configuration>
            </notifier>
        </notifiers>
    </ciManagement>

    <inceptionYear>2010</inceptionYear>

    <modules>
        <module>maven-utils</module>
        <module>core</module>
        <module>jee-modules</module>
        <module>jse-modules</module>
        <module>component-support-modules</module>
        <module>jee5-support-modules</module>
        <module>bundles</module>

        <module>test-modules</module>
        <module>examples</module>
    </modules>

    <properties>
        <owb.version>1.1.2</owb.version>

        <!-- JSF-2.0 implementations-->
        <myfaces2.version>2.0.5</myfaces2.version>
        <myfaces2.version.current>2.0.5</myfaces2.version.current>
        <mojarra2.version>2.0.3-b03</mojarra2.version>

        <!-- JSF-1.2 implementations-->
        <myfaces1.version>1.2.8</myfaces1.version>
        <mojarra1.version>1.2_14</mojarra1.version>

        <trinidad1.version>1.2.12</trinidad1.version>
        <trinidad2.version>2.0.0</trinidad2.version>

        <maven.jetty.plugin.version>7.1.5.v20100705</maven.jetty.plugin.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- OWB specific dependencies-->
            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-atinject_1.0_spec</artifactId>
                <version>1.0</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-jcdi_1.0_spec</artifactId>
                <version>1.0</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-interceptor_1.1_spec</artifactId>
                <version>1.0</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.openwebbeans</groupId>
                <artifactId>openwebbeans-impl</artifactId>
                <version>${owb.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.openwebbeans</groupId>
                <artifactId>openwebbeans-spi</artifactId>
                <version>${owb.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.openwebbeans</groupId>
                <artifactId>openwebbeans-resource</artifactId>
                <version>${owb.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.openwebbeans</groupId>
                <artifactId>openwebbeans-web</artifactId>
                <version>${owb.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.openwebbeans</groupId>
                <artifactId>openwebbeans-jsf</artifactId>
                <version>${owb.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.openwebbeans.test</groupId>
                <artifactId>cditest</artifactId>
                <version>${owb.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.openwebbeans.test</groupId>
                <artifactId>cditest-owb</artifactId>
                <version>${owb.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.myfaces.test</groupId>
                <artifactId>myfaces-test12</artifactId>
                <version>1.0.0</version>
                <scope>provided</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.bundles</groupId>
                <artifactId>myfaces-extcdi-bundle-jsf12</artifactId>
                <version>1.0.6-SNAPSHOT</version>
                <scope>provided</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.bundles</groupId>
                <artifactId>myfaces-extcdi-bundle-jsf20</artifactId>
                <version>1.0.6-SNAPSHOT</version>
                <scope>provided</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.bundles</groupId>
                <artifactId>myfaces-extcdi-bundle-alternative-configuration</artifactId>
                <version>1.0.6-SNAPSHOT</version>
                <scope>provided</scope>
            </dependency>

            <!-- the JSF independent core -->
            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.core</groupId>
                <artifactId>myfaces-extcdi-core-api</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.core</groupId>
                <artifactId>myfaces-extcdi-core-impl</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>

            <!-- the JSF-1.2 specific library -->
            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
                <artifactId>myfaces-extcdi-jsf12-module-api</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
                <artifactId>myfaces-extcdi-jsf12-module-impl</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>

            <!-- the JSF-2.0 specific library, which includes the JSF-1.2 parts -->
            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
                <artifactId>myfaces-extcdi-jsf20-module-api</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
                <artifactId>myfaces-extcdi-jsf20-module-impl</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>

            <!-- the BV-1.0 specific library -->
            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
                <artifactId>myfaces-extcdi-bv1-module-api</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
                <artifactId>myfaces-extcdi-bv1-module-impl</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>

            <!-- CODI JPA-1.0 Module -->
            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
                <artifactId>myfaces-extcdi-jpa1-module-api</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
                <artifactId>myfaces-extcdi-jpa1-module-impl</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>

            <!-- CODI-I18N Message Module -->
            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
                <artifactId>myfaces-extcdi-message-module-api</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
                <artifactId>myfaces-extcdi-message-module-impl</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>

            <!-- CODI-Scripting Module -->
            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
                <artifactId>myfaces-extcdi-scripting-module-api</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
                <artifactId>myfaces-extcdi-scripting-module-impl</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>

            <!-- CODI-Component Support Modules -->
            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.modules.component-support</groupId>
                <artifactId>myfaces-extcdi-trinidad12-support</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>

            <!-- java-ee support modules -->
            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.modules.jee5-support</groupId>
                <artifactId>myfaces-extcdi-jee5-openwebbeans-support</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>

            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.modules.jee5-support</groupId>
                <artifactId>myfaces-extcdi-jee5-weld-support</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>

            <!-- Base test infrastructure modules -->
            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.test</groupId>
                <artifactId>myfaces-extcdi-base-test-infrastructure</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>

            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.test</groupId>
                <artifactId>myfaces-extcdi-junit-support-module</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>

            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.test</groupId>
                <artifactId>myfaces-extcdi-cargo-support-module</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>

            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.test</groupId>
                <artifactId>myfaces-extcdi-owb-support-module</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>

            <dependency>
                <groupId>org.apache.myfaces.extensions.cdi.test</groupId>
                <artifactId>myfaces-extcdi-jsf-support-module</artifactId>
                <version>1.0.6-SNAPSHOT</version>
            </dependency>

            <!--
                We currently need this for the CDI test container to emulate the @SessionScoped.
                TODO: Finally this should not be necessary anymore.
            -->
            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-servlet_2.5_spec</artifactId>
                <version>1.2</version>
                <scope>provided</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-el_1.0_spec</artifactId>
                <version>1.0.2</version>
                <scope>provided</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-el_2.2_spec</artifactId>
                <version>1.0</version>
                <scope>provided</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-validation_1.0_spec</artifactId>
                <version>1.0</version>
                <scope>provided</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-jpa_1.0_spec</artifactId>
                <version>1.1.2</version>
                <scope>provided</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-jta_1.1_spec</artifactId>
                <version>1.1.1</version>
                <scope>provided</scope>
            </dependency>
            
            <!-- dependencies for component support modules-->
            <dependency>
                <groupId>org.apache.myfaces.trinidad</groupId>
                <artifactId>trinidad-api</artifactId>
                <version>${trinidad1.version}</version>
                <scope>provided</scope>
            </dependency>

            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.8.1</version>
                <scope>test</scope>
            </dependency>

            <dependency>
                <groupId>net.sourceforge.htmlunit</groupId>
                <artifactId>htmlunit</artifactId>
                <version>2.8</version>
                <scope>test</scope>
            </dependency>

        </dependencies>

    </dependencyManagement>

    <!-- These dependencies are needed for each and every module in this project -->
    <dependencies>

        <!-- atinject and cdi specs for OWB-->
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-atinject_1.0_spec</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jcdi_1.0_spec</artifactId>
            <scope>provided</scope>
        </dependency>

        <!-- the interceptors spec from EE6 -->
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-interceptor_1.1_spec</artifactId>
            <scope>provided</scope>
        </dependency>

        <!-- we use testng for testing -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>5.14.10</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.openwebbeans.test</groupId>
            <artifactId>cditest</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.openwebbeans.test</groupId>
            <artifactId>cditest-owb</artifactId>
            <scope>test</scope>
        </dependency>
        <!--
            We currently need this for the CDI test container to emulate the @SessionScoped.
            TODO: Finally this should not be necessary anymore.
        -->
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-servlet_2.5_spec</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-el_2.2_spec</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <archive>
                            <manifest>
                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>


        <plugins>
            <plugin>
                <!--
                    - Copy LICENSE.txt and NOTICE.txt so that they are included
                    - in the -javadoc jar file for the component.
                -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <id>javadoc.resources</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <copy todir="${project.build.directory}/apidocs/META-INF">
                                    <fileset dir="${basedir}">
                                        <include name="LICENSE.txt" />
                                        <include name="NOTICE.txt" />
                                    </fileset>
                                </copy>
                            </tasks>
                        </configuration>
                    </execution>
                    <execution>
                        <id>javadoc.site.copy</id>
                        <phase>site</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <!-- Copy javadoc to another directory, to keep javadoc of previous versions on site -->
                                <copy todir="${project.build.directory}/site/apidocs-${project.version}" failonerror="false">
                                    <fileset dir="${project.build.directory}/site/apidocs" />
                                </copy>
                            </tasks>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--
                - Make a checkstyle violation a compile error. Note that if a compile error occurs,
                - further information can be found in target/site/checkstyle.html (present even when
                - just the compile goal and not the site goal has been run). Note also that child
                - projects may redeclare this plugin and provide different configuration settings
                - to use different checks (more or less strict than the default).
            -->

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <executions>
                    <execution>
                        <id>verify-style</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <configLocation>default/myfaces-checks-standard.xml</configLocation>
                    <headerLocation>default/myfaces-header.txt</headerLocation>
                </configuration>
            </plugin>

            <plugin>
                <inherited>true</inherited>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>

                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <!-- Set compile source at 1.5, since the target JSF impl is 1.2 -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                    <optimize>false</optimize>
                </configuration>
            </plugin>
            
            <plugin>
                <artifactId>maven-release-plugin</artifactId>
                <configuration>
                    <preparationGoals>clean install</preparationGoals>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <reporting>
        <plugins>
<!--
            <plugin>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.3</version>
            </plugin>
            <plugin>
                <artifactId>maven-jxr-plugin</artifactId>
                <version>2.1</version>
            </plugin>
-->
<!--
            <plugin>
                <artifactId>maven-surefire-report-plugin</artifactId>
                <version>2.4.3</version>
            </plugin>
-->
<!--
            <plugin>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>2.0.1</version>
            </plugin>
-->
            <plugin>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <rulesets>
                        <ruleset>rulesets/basic.xml</ruleset>
                        <ruleset>rulesets/unusedcode.xml</ruleset>
                    </rulesets>
                    <minimumTokens>100</minimumTokens>
                    <targetJdk>1.5</targetJdk>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <configuration>
                    <configLocation>default/myfaces-checks-standard.xml</configLocation>
                    <headerLocation>default/myfaces-header.txt</headerLocation>
                </configuration>
            </plugin>
        </plugins>
    </reporting>    

    <profiles>
        <profile>
            <id>deprecated</id>
            <modules>
                <module>alternative-modules</module>
            </modules>

            <dependencyManagement>
                <dependencies>
                    <!-- optional configuration modules -->
                    <dependency>
                        <groupId>org.apache.myfaces.extensions.cdi.modules.alternative</groupId>
                        <artifactId>myfaces-extcdi-core-alternative-configuration</artifactId>
                        <version>1.0.6-SNAPSHOT</version>
                    </dependency>

                    <dependency>
                        <groupId>org.apache.myfaces.extensions.cdi.modules.alternative</groupId>
                        <artifactId>myfaces-extcdi-jsf-alternative-configuration</artifactId>
                        <version>1.0.6-SNAPSHOT</version>
                    </dependency>

                    <dependency>
                        <groupId>org.apache.myfaces.extensions.cdi.modules.alternative</groupId>
                        <artifactId>myfaces-extcdi-alternative-implementation-module</artifactId>
                        <version>1.0.6-SNAPSHOT</version>
                    </dependency>
                </dependencies>
            </dependencyManagement>
        </profile>

        <profile>
            <!-- use this profile to test CODI with mojarra-->
            <id>mojarra</id>
            <repositories>
                <repository>
                    <id>maven2-repository.dev.java.net</id>
                    <name>Java.net Repository for Maven</name>
                    <url>http://download.java.net/maven/1/</url>
                    <layout>legacy</layout>
                </repository>
            </repositories>
        </profile>

        <!--
            Add the assembly module when performing an apache-release
            
            USAGE:
             - mvn release:prepare -Papache-release
             - mvn release:perform -Papache-release

            NOTE that for the maven lifecycle invoked by the release plugin, -Papache-release will
            be added automatically because of the config in apache-parent-7.
        -->
        <profile>
            <id>apache-release</id>

            <modules>
                <module>assembly</module>
            </modules>
        </profile>

        <profile>
            <id>extended-manifest</id>
            <build>
                <plugins>
                    <!-- revision number in manifest files -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifest>
                                    <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                                    <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                                </manifest>
                                <manifestEntries>
                                    <Revision>${scm.revision}</Revision>
                                    <Java-Vendor>${java.vendor}</Java-Vendor>
                                </manifestEntries>
                            </archive>
                        </configuration>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>test-jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>buildnumber-maven-plugin</artifactId>
                        <version>1.0-beta-4</version>
                        <executions>
                            <execution>
                                <phase>validate</phase>
                                <goals>
                                    <goal>create</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <doCheck>false</doCheck>
                            <doUpdate>false</doUpdate>
                            <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
                            <buildNumberPropertyName>scm.revision</buildNumberPropertyName>
                            <!--revisionOnScmFailure>unknown</revisionOnScmFailure-->
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>
