<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright 2006 The Apache Software Foundation.

  Licensed 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 project uses a custom plugin to process metadata held by this project and generate
  - a jarfile that contains just config data. The main api and impl projects then run a plugin
  - against this jarfile in order to generate various jsf-specific artifacts, including:
  -   * jsf component classes
  -   * jsp taglib classes
  -   * a faces-config file
  -
  - This is done because JSF has a lot of "boilerplate" type code: 
  -  * Component classes have getters and setters for many properties.
  -  * There is a JSP tag class for each component, with exactly the same
  -    properties, and code that just passes the data through to the component
  -    class in a very standard manner.
  -  * A JSP taglib file must then declare the same properties in xml tags
  -  * A JSF faces-config.xml file must declare each component
  -
  - If you want to improve the documentation for a public property of a JSF component,
  - then the meta-data files in this project is where it needs to be done.
  -->
<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">
  <parent>
    <groupId>org.apache.myfaces.core</groupId>
    <artifactId>myfaces-core-project</artifactId>
    <version>1.2.6-SNAPSHOT</version>
  </parent>

  <modelVersion>4.0.0</modelVersion>

  <name>Apache MyFaces Core 1.2 Build</name>
  <description>Apache MyFaces 1.2 Core Build</description>

  <artifactId>myfaces-build</artifactId>
  <packaging>jar</packaging>

  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/myfaces/core/branches/1.2.x/build</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/myfaces/core/branches/1.2.x/build</developerConnection>
    <url>http://svn.apache.org/repos/asf/myfaces/core/branches/1.2.x/build</url>
  </scm>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.myfaces.buildtools</groupId>
        <artifactId>myfaces-faces-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>**/includes/**</exclude>
          </excludes>
          <force>true</force>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>generate-master-faces-config</goal>
            </goals>
          </execution>
        </executions>
          <dependencies>
          <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>

</project>