<?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.
-->

<!--
This pom file has been optimized for Maven3.  Usage of the various targets/tasks is below.

Build:
  mvn3 [install]
  mvn3 clean install
 
Prepare Release
  mvn3 release:prepare -DprepareRelease=true
  
Perform Release
  mvn3 release:perform -DperformRelease=true

Change Version Number (http://maven.apache.org/plugins/maven-release-plugin/examples/update-versions.html)
  mvn3 release:update-versions
  mvn3 release:update-versions -DautoVersionSubmodules=true

Create A Branch (http://maven.apache.org/plugins/maven-release-plugin/examples/branch.html)
  mvn3 release:branch -DbranchName=my-branch
  mvn3 release:branch -DbranchName=my-branch -DupdateBranchVersions=true -DupdateWorkingCopyVersions=false
-->

<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>

  <name>Apache MyFaces Trinidad 1.2</name>
  <description>Apache MyFaces Trinidad for JSF 1.2</description>
  <url>http://myfaces.apache.org/trinidad/trinidad-1_2</url>
  <inceptionYear>2001</inceptionYear>

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

  <groupId>org.apache.myfaces.trinidad</groupId>
  <artifactId>trinidad</artifactId>
  <version>1.2.15</version>
  <packaging>pom</packaging>

  <properties>
    <!-- Standards -->
    <jdk.version>1.5</jdk.version>    
    <servlet.version>2.5</servlet.version>
    <portlet.version>2.0</portlet.version>
    <jsp.version>2.1</jsp.version>
    <jstl.version>1.2</jstl.version>
    <jsf-spec.version>1.2</jsf-spec.version>
    <jsf-ri.version>1.2_15</jsf-ri.version>
    <jsf-myfaces.version>1.2.9</jsf-myfaces.version>
    <sunjsf.ri.version>2.0.2</sunjsf.ri.version>
    <myfaces2.version>2.0.0-SNAPSHOT</myfaces2.version>
    <jsf-facelets.version>1.1.14</jsf-facelets.version>
    <portlet-bridge.version>1.0.0-beta</portlet-bridge.version>
    <commons-lang.version>2.4</commons-lang.version>
    <commons-codec.version>1.3</commons-codec.version>
    <pluto-embedded.version>1.0.1</pluto-embedded.version>
    
    <!-- Testing -->
    <shale.version>1.0.5</shale.version>
    <jmock.version>1.2.0</jmock.version>
    <junit.version>4.4</junit.version>
    
    <!-- Plugins -->
    <trinidad-plugins.version>1.2.11</trinidad-plugins.version>
    <wagon-plugin.version>1.0.6</wagon-plugin.version>
    <jetty-plugin.version>6.1.16</jetty-plugin.version>
    <pluto.version>1.1.6</pluto.version>
    <pluto.package>org.apache.pluto</pluto.package>
    
    <!-- Other -->
    <jdev.release>11.1.1.0.0</jdev.release>
    <!-- Site deployment -->
    <siteModule.path>trinidad-1.2</siteModule.path>
    <site.mainDirectory>${user.home}/myfaces-site/checkout</site.mainDirectory>
    <siteContent.path>${user.home}/myfaces-site/site/${siteModule.path}</siteContent.path>
    <!-- it's a default location for performance reason (not checkout the content all the time)
         you can override this value in your settings. -->
    <scmCheckout.path>\${site.mainDirectory}/${siteModule.path}</scmCheckout.path>
    <siteDeploy.url>file://${user.home}/myfaces-site/site/${siteModule.path}</siteDeploy.url>
    <siteScmPublish.url>scm:svn:https://svn.apache.org/repos/asf/myfaces/site/publish/</siteScmPublish.url>
    
	<checkstyle.skip>true</checkstyle.skip>
	
  </properties>

  <issueManagement>
    <system>jira</system>
    <url>http://issues.apache.org/jira/browse/TRINIDAD</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>

  <mailingLists>
    <mailingList>
      <name>MyFaces Users (use [Trinidad] prefix)</name>
      <post>users@myfaces.apache.org</post>
      <subscribe>users-subscribe@myfaces.apache.org</subscribe>
      <unsubscribe>users-unsubscribe@myfaces.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/myfaces-users</archive>
      <otherArchives>
        <otherArchive>http://users.myfaces.markmail.org/</otherArchive>
        <otherArchive>http://www.mail-archive.com/users@myfaces.apache.org/</otherArchive>
        <otherArchive>http://www.nabble.com/MyFaces---Users-f181.html</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>MyFaces Developers (use [Trinidad] prefix)</name>
      <post>dev@myfaces.apache.org</post>
      <subscribe>dev-subscribe@myfaces.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@myfaces.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/myfaces-dev</archive>
      <otherArchives>
        <otherArchive>http://dev.myfaces.markmail.org/</otherArchive>
        <otherArchive>http://www.mail-archive.com/dev@myfaces.apache.org/</otherArchive>
        <otherArchive>http://www.nabble.com/My-Faces---Dev-f182.html</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>MyFaces issues</name>
      <post>Do not post</post>
      <subscribe>issues-subscribe@myfaces.apache.org</subscribe>
      <unsubscribe>issues-unsubscribe@myfaces.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/myfaces-dev</archive>
      <otherArchives>
        <otherArchive>http://dev.myfaces.markmail.org/</otherArchive>
        <otherArchive>http://www.mail-archive.com/dev@myfaces.apache.org/</otherArchive>
        <otherArchive>http://www.nabble.com/My-Faces---Dev-f182.html</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>MyFaces commits</name>
      <post>Do not post</post>
      <subscribe>commits-subscribe@myfaces.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@myfaces.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/myfaces-commits</archive>
      <otherArchives>
        <otherArchive>http://commits.myfaces.markmail.org/</otherArchive>
      </otherArchives>
    </mailingList>
  </mailingLists>

  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/myfaces/trinidad/tags/trinidad-1.2.15</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/myfaces/trinidad/tags/trinidad-1.2.15</developerConnection>
    <url>http://svn.apache.org/viewvc/myfaces/trinidad/tags/trinidad-1.2.15</url>
  </scm>

  <repositories>
    <!-- needed for Bean Validation API -->
    <repository>
      <id>jboss</id>
      <name>jboss nexus</name>
      <url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>
    </repository>
    <!-- Needed for Mojarra -->
    <repository>
      <id>maven2-repository.dev.java.net</id>
      <name>Java.net Repository for Maven</name>
      <url>http://download.java.net/maven/2/</url>
    </repository>
  </repositories>

  <pluginRepositories>
    <!--
        We need this in HERE, since our plugins are a separate project.
        It would be awful to have that setting in the myfaces-pom.
    -->
    <pluginRepository>
      <id>apache.snapshots</id>
      <name>Apache Snapshot Repository</name>
      <url>http://repository.apache.org/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
    </pluginRepository>
  </pluginRepositories>

  <!--
  <distributionManagement>
    <site>
      <id>apache-site</id>
      <name>Apache Website</name>
      <url>scp://minotaur.apache.org/www/myfaces.apache.org/trinidad</url>
    </site>
  </distributionManagement>
  -->
  <distributionManagement>
    <site>
      <id>myfaces-local-staging</id>
      <name>Apache Website</name>
      <url>scp://localhost/${user.home}/myfaces-site/${siteModule.path}</url>
    </site>
  </distributionManagement>  

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>${servlet.version}</version>
        <scope>provided</scope>
      </dependency>

      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>${jstl.version}</version>
        <scope>provided</scope>
      </dependency>

      <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>${jsp.version}</version>
        <scope>provided</scope>
      </dependency>

      <dependency>
        <groupId>javax.portlet</groupId>
        <artifactId>portlet-api</artifactId>
        <version>${portlet.version}</version>
        <scope>provided</scope>
      </dependency>
      
      <dependency>
        <groupId>javax.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>${jsf-ri.version}</version>
        <scope>provided</scope>
      </dependency>

      <dependency>
        <groupId>javax.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>${jsf-ri.version}</version>
        <scope>provided</scope>
      </dependency>

      <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-api</artifactId>
        <version>${jsf-myfaces.version}</version>
        <scope>provided</scope>
      </dependency>

      <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-impl</artifactId>
        <version>${jsf-myfaces.version}</version>
        <scope>provided</scope>
      </dependency>


<!-- JSF2 -->
      <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>${sunjsf.ri.version}</version>
      </dependency>

      <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>${sunjsf.ri.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.myfaces.portlet-bridge</groupId>
        <artifactId>portlet-bridge-api</artifactId>
        <version>${portlet-bridge.version}</version>
        <scope>provided</scope>
      </dependency>
      
      <dependency>
        <!-- If the impl is needed, it should always be added in -->
        <groupId>org.apache.myfaces.portlet-bridge</groupId>
        <artifactId>portlet-bridge-impl</artifactId>
        <version>${portlet-bridge.version}</version>
        <scope>provided</scope>
      </dependency>
      
      <dependency>
        <groupId>com.sun.facelets</groupId>
        <artifactId>jsf-facelets</artifactId>
        <version>${jsf-facelets.version}</version>
        <scope>provided</scope>
      </dependency>

      <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>${commons-lang.version}</version>
      </dependency>

      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>${commons-codec.version}</version>
      </dependency>

	  <dependency>
        <groupId>org.apache.myfaces.trinidad</groupId>
        <artifactId>trinidad-build</artifactId>
        <version>${project.version}</version>
        <scope>provided</scope>
      </dependency>

      <dependency>
        <groupId>org.apache.myfaces.trinidad</groupId>
        <artifactId>trinidad-api</artifactId>
        <version>${project.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.myfaces.trinidad</groupId>
        <artifactId>trinidad-impl</artifactId>
        <version>${project.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.myfaces.trinidad</groupId>
        <artifactId>trinidad-api</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.apache.shale</groupId>
        <artifactId>shale-test</artifactId>
        <version>${shale.version}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>jmock</groupId>
        <artifactId>jmock</artifactId>
        <version>${jmock.version}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>jmock</groupId>
        <artifactId>jmock-cglib</artifactId>
        <version>${jmock.version}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
      </dependency>
      
      <dependency>
        <groupId>com.bekk.boss</groupId>
        <artifactId>maven-jetty-pluto-embedded</artifactId>
        <version>${pluto-embedded.version}</version>
      </dependency>
      <dependency>
        <groupId>${pluto.package}</groupId>
        <artifactId>pluto-util</artifactId>
        <version>${pluto.version}</version>
        <scope>provided</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <modules>
    <module>trinidad-build</module>
    <module>trinidad-api</module>
    <module>trinidad-impl</module>
  </modules>

  <build>
  
    <!-- Since Maven 3.0, this is required to add scpexe as protocol for deploy. -->
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ssh-external</artifactId>
        <version>1.0-beta-7</version>
      </extension>
    </extensions>
        
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.3</version>
          <inherited>true</inherited>
          <dependencies>
            <dependency>
              <groupId>org.apache.maven.wagon</groupId>
              <artifactId>wagon-ssh</artifactId>
              <version>1.0-beta-7</version>
            </dependency>
          </dependencies>
          <configuration>
            <stagingRepositoryId>myfaces-local-staging</stagingRepositoryId>
            <stagingSiteURL>${siteDeploy.url}</stagingSiteURL>
            <outputEncoding>UTF-8</outputEncoding>
            <reportPlugins>
              <!--plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>2.0</version>
                <configuration>
                  <threshold>Low</threshold>
                </configuration>
              </plugin-->

              <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>rat-maven-plugin</artifactId>
              </plugin>

              <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <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>
                  <linkXref>true</linkXref>
                  <minimumTokens>100</minimumTokens>
                  <targetJdk>${jdk.version}</targetJdk>
                </configuration>
              </plugin -->
            </reportPlugins>
          </configuration>
        </plugin>

        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.17</version>
          <inherited>true</inherited>
          <configuration>
            <!-- set the forkMode to "always" to validate new tests,
              and "never" otherwise for performance -->
            <forkMode>never</forkMode>
            <parallel>true</parallel>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.myfaces.maven</groupId>
          <artifactId>wagon-maven-plugin</artifactId>
          <version>${wagon-plugin.version}</version>
          <inherited>true</inherited>
          <configuration>
            <id>myfaces-nightly-builds</id>
            <url>scpexe://minotaur.apache.org/www/people.apache.org/builds/myfaces/nightly</url>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.myfaces.trinidadbuild</groupId>
          <artifactId>maven-xrts-plugin</artifactId>
          <version>${trinidad-plugins.version}</version>
          <inherited>true</inherited>
        </plugin>
        
        <plugin>
          <groupId>org.apache.myfaces.trinidadbuild</groupId>
          <artifactId>maven-faces-plugin</artifactId>
          <version>${trinidad-plugins.version}</version>
          <inherited>true</inherited>
          <configuration>
            <force>true</force>
            <jsfVersion>${jsf-spec.version}</jsfVersion>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.myfaces.trinidadbuild</groupId>
          <artifactId>maven-jdev-plugin</artifactId>
          <version>${trinidad-plugins.version}</version>
        </plugin>

        <plugin>
          <groupId>org.apache.myfaces.trinidadbuild</groupId>
          <artifactId>maven-i18n-plugin</artifactId>
          <version>${trinidad-plugins.version}</version>
          <inherited>true</inherited>
        </plugin>

        <plugin>
          <groupId>org.apache.myfaces.trinidadbuild</groupId>
          <artifactId>maven-javascript-plugin</artifactId>
          <version>${trinidad-plugins.version}</version>
          <inherited>true</inherited>
        </plugin>

        <plugin>
          <groupId>org.apache.myfaces.trinidadbuild</groupId>
          <artifactId>maven-tagdoc-plugin</artifactId>
          <version>${trinidad-plugins.version}</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <inherited>true</inherited>
          <configuration>
            <source>${jdk.version}</source>
            <target>${jdk.version}</target>
            <!--
            <showWarnings>true</showWarnings>
            <compilerArgument>-Xlint:all,-serial,-fallthrough</compilerArgument>
            -->
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-pmd-plugin</artifactId>
          <inherited>true</inherited>
          <version>2.6</version>
          <configuration>
            <targetJdk>${jdk.version}</targetJdk>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <configuration>
            <source>${jdk.version}</source>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <inherited>true</inherited>
          <configuration>
            <filtering>false</filtering>
          </configuration>
        </plugin>

        <plugin>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
                <execution>
                    <id>attach-source</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <plugin>
          <groupId>org.mortbay.jetty</groupId>
          <artifactId>maven-jetty-plugin</artifactId>
          <version>${jetty-plugin.version}</version>
        </plugin>

        <plugin>
          <groupId>${pluto.package}</groupId>
          <artifactId>maven-pluto-plugin</artifactId>
          <version>${pluto.version}</version>
          <executions>  
            <execution>  
              <phase>generate-resources</phase>  
              <goals>  
                <goal>assemble</goal>  
              </goals>  
            </execution>  
          </executions>  
        </plugin>  

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-idea-plugin</artifactId>
          <configuration>
            <jdkName>${maven.compile.source}</jdkName>
            <linkModules>true</linkModules>
            <downloadSources>true</downloadSources>
            <jdkLevel>5.0</jdkLevel>
          </configuration>
        </plugin>
		<!-- Begin dependency fix for .md5 and .sha1 -->
		<plugin>
		  <groupId>org.apache.maven.plugins</groupId>
		  <artifactId>maven-release-plugin</artifactId>
		  <version>2.5.3</version>
		</plugin>
		<plugin>
		  <groupId>org.apache.maven.plugins</groupId>
		  <artifactId>maven-gpg-plugin</artifactId>
		  <version>1.6</version>
		</plugin>
		<plugin>
		  <groupId>org.apache.maven.plugins</groupId>
		  <artifactId>maven-deploy-plugin</artifactId>
		  <version>2.8.2</version>
		</plugin>
		<!-- End -->		
		
      </plugins>
    </pluginManagement>
    
    <plugins>
      <!--
        Trinidad must now be built with a minimum of Maven 3.0 and Java 5.0 because
        of some oddities with the checkstyle plugin 
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.0.1</version>
        <executions>
          <execution>
            <id>enforce-maven</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireJavaVersion>
                  <message>Apache MyFaces Trinidad 1.2 needs to be compiled with Java 5</message>
                  <version>1.5</version>
                </requireJavaVersion>
                <requireMavenVersion>
                  <!-- Require AT LEAST Maven 3.0 or higher -->
                  <version>[${maven.min-version},)</version>
                </requireMavenVersion>
                <requireJavaVersion>
                  <message>Apache MyFaces Trinidad 2 needs to be compiled with at least JDK ${jdk.min-version}</message>                
                  <version>[${jdk.min-version},)</version>
                </requireJavaVersion>
              </rules>    
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
          <preparationGoals>clean verify install</preparationGoals>
          <tagBase>https://svn.apache.org/repos/asf/myfaces/trinidad/tags</tagBase>
          <autoVersionSubmodules>true</autoVersionSubmodules>
        </configuration>
      </plugin>

      <!-- force generating a *-sources.jar when building a jar -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-source</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.myfaces.trinidadbuild</groupId>
        <artifactId>maven-xrts-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>generate-sources</goal>
              <goal>generate-test-sources</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
        
      <plugin>
        <artifactId>maven-remote-resources-plugin</artifactId>
        <version>1.0-alpha-6</version>
        <executions>
          <execution>
            <goals>
              <goal>process</goal>
            </goals>
            <configuration>
              <resourceBundles>
                <resourceBundle>org.apache:apache-jar-resource-bundle:1.3</resourceBundle>
              </resourceBundles>
              <properties>
                <addLicense>true</addLicense>
              </properties>
            </configuration>
          </execution>
        </executions>
      </plugin>

      
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-scm-publish-plugin</artifactId>
        <version>1.0-beta-2</version>
        <configuration>
        <pubScmUrl>${siteScmPublish.url}</pubScmUrl>
        <tryUpdate>true</tryUpdate>
        <checkoutDirectory>${scmCheckout.path}</checkoutDirectory>
        <content>\${siteContent.path}</content>
        </configuration>
      </plugin>

    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>rat-maven-plugin</artifactId>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>2.0.1</version>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-doap-plugin</artifactId>
        <version>1.0</version>
        <configuration>
          <category>web-framework</category>
          <language>Java</language>
          <shortdesc>Set of user interface components based on JSF.</shortdesc>
          <pmc>http://myfaces.apache.org</pmc>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <rulesets>
            <ruleset>/rulesets/basic.xml</ruleset>
            <ruleset>/rulesets/unusedcode.xml</ruleset>
          </rulesets>
          <linkXref>true</linkXref>
          <minimumTokens>100</minimumTokens>
          <targetJdk>${jdk.version}</targetJdk>
        </configuration>
      </plugin>
    </plugins>
  </reporting>

  <profiles>
    <!--
      This profile builds the examples when NOT performing a release.  Execute this profile
      by making sure that there is no -DperformRelease property on the maven command.  If
      there is, it may manually be invoked by adding a -PbuildExamples.
    -->
    <profile>
      <id>buildExamples</id>
      <activation>
        <property>
          <name>!performRelease</name>
        </property>
      </activation>
      
      <modules>
        <module>trinidad-examples</module>
      </modules>
    </profile>

   <!--
     To create a new branch, use the following command:
     mvn release:branch -DprepareRelease=true -DbranchName=my-branch -DupdateBranchVersions=true -DupdateWorkingCopyVersions=false
   -->

    <!-- 
      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>trinidad-assembly</module>
      </modules>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
            <executions>
              <execution>
                <phase>verify</phase>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build> 
    </profile>
    -->
    
        <profile>
            <id>prepare-release</id>
            <activation>
                <property>
                    <name>prepareRelease</name>
                </property>
            </activation>
            <modules>
                <module>trinidad-assembly</module>
            </modules>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-release-plugin</artifactId>
                        <configuration>
                            <arguments>-DprepareRelease</arguments>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>perform-release</id>
            <activation>
                <property>
                    <name>performRelease</name>
                    <value>true</value>
                </property>
            </activation>
            <modules>
                <module>trinidad-assembly</module>
            </modules>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-release-plugin</artifactId>
                        <configuration>
                            <arguments>-Papache-release -DperformRelease</arguments>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

    <profile>
      <id>enableRat</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
            <executions>
              <execution>
                <phase>verify</phase>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!--
      This profile enables asserts in the surefire tests. Do not use this with Maven 2.0.6 or
      you will get an error.  Execute this profile like this:
      
      mvn install -PenableAssert
    -->
    <profile>
      <id>enableAssert</id>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
              <inherited>true</inherited>
              <configuration>
                <forkMode>once</forkMode>
                <argLine>-enableassertions</argLine>
                <parallel>false</parallel>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    
    <!--
      This marks the JSF libraries for inclusion into the example projects.  Execute this profile
      like this:
      
      mvn install -PincludeJSF
    -->    
    <profile>
      <id>includeJSF</id>
      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>javax.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>${jsf-ri.version}</version>
            <scope>compile</scope>
          </dependency>

          <dependency>
            <groupId>javax.faces</groupId>
            <artifactId>jsf-impl</artifactId>
            <version>${jsf-ri.version}</version>
            <scope>runtime</scope>
          </dependency>

          <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-api</artifactId>
            <version>${jsf-myfaces.version}</version>
            <scope>compile</scope>
          </dependency>

          <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-impl</artifactId>
            <version>${jsf-myfaces.version}</version>
            <scope>runtime</scope>
          </dependency>
        </dependencies>
      </dependencyManagement>
    </profile>
    
    <!--
      This marks the JSTL libraries for inclusion into the example projects.  Execute this profile
      like this:
      
      mvn install -PincludeJSTL
    -->
    <profile>
      <id>includeJSTL</id>
      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl.version}</version>
            <scope>compile</scope>
          </dependency>
        </dependencies>
      </dependencyManagement>
    </profile>
    
    <!--
      This marks the Bridge libraries for inclusion into the example projects.  Execute this profile
      like this:
      
      mvn install -PincludeBridge
    -->
    <profile>
      <id>includeBridge</id>
      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>org.apache.myfaces.portlet-bridge</groupId>
            <artifactId>portlet-bridge-api</artifactId>
            <version>${portlet-bridge.version}</version>
            <scope>compile</scope>
          </dependency>
      
          <dependency>
            <groupId>org.apache.myfaces.portlet-bridge</groupId>
            <artifactId>portlet-bridge-impl</artifactId>
            <version>${portlet-bridge.version}</version>
            <scope>runtime</scope>
          </dependency>
        </dependencies>
      </dependencyManagement>      
    </profile>

    <!-- allow people that use Java6 (or above) as their default JRE to specify
      a Java5 home in their maven settings.xml. This makes the javac
      run from that location (forked). This will fail if running on
      Java6 without the Java5 home set. This only affects the compiler,
      all tests and other maven plugins will still run it the active
      JDK (java6). The property that is needed is "jdk5.home"
      
      Example usage in your settings.xml:
<settings>
  <profiles>
    <profile>
      <id>java5.home</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <jdk5.home>/usr/lib/jvm/java-1.5.0-sun</jdk5.home>
      </properties>
    </profile>
  </profiles>
</settings>
      -->
  </profiles>
</project>
