<?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.tobago</groupId>
    <artifactId>tobago</artifactId>
    <version>4.5.4</version>
  </parent>
  <packaging>pom</packaging>
  <name>Tobago Examples</name>
  <artifactId>tobago-example</artifactId>

  <modules>
    <module>tobago-example-blank</module>
    <module>tobago-example-demo</module>
    <module>tobago-example-assembly</module>
  </modules>

  <build>
    <!-- For the examples mvn jetty:run should work.
         For Debugging with jetty set following options
            MAVEN_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
     -->
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
      </plugin>
      <plugin>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
          <configuration>
            <!-- use this to change the context path: -->
<!--
            <webApp>
              <contextPath>/example</contextPath>
            </webApp>
-->
            <!-- use this to change the port: -->
<!--
            <httpConnector>
              <port>7080</port>
            </httpConnector>
-->
<!--
  hint: to run jetty with mojarra > 2.3 please call:
  mvn clean install -Djsf=mojarra-2.3 jetty:run
-->
          </configuration>
      </plugin>
      <plugin>
        <!-- usage: mvn clean package tomee:run -Djsf=provided -->
        <groupId>org.apache.openejb.maven</groupId>
        <artifactId>tomee-maven-plugin</artifactId>
        <version>1.7.5</version>
        <configuration>
          <tomeeVersion>1.7.5</tomeeVersion>
          <tomeeClassifier>plus</tomeeClassifier>
          <!--<tomeeHttpPort>9090</tomeeHttpPort>-->
          <context>ROOT</context>
          <!--<context>/demo</context>-->
          <config>${project.basedir}/src/test/tomee/conf</config>
        </configuration>
      </plugin>

    </plugins>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>jetty-maven-plugin</artifactId>
          <version>9.4.41.v20210516</version>
          <configuration>
            <scanIntervalSeconds>5</scanIntervalSeconds>
            <webAppConfig>
              <overrideDescriptor>${override-web-xml}</overrideDescriptor>
            </webAppConfig>
<!--
            <systemProperties>
              <systemProperty>
                <name>logback.configurationFile</name>
                <value>/Users/lofwyr/t/logback.xml</value>
              </systemProperty>
              <systemProperty>
                <name>java.util.logging.config.file</name>
                <value>logging.properties</value>
              </systemProperty>
            </systemProperties>
-->
          </configuration>
<!--
          <dependencies>
            <dependency>
              <groupId>org.slf4j</groupId>
              <artifactId>jul-to-slf4j</artifactId>
              <version>${slf4j.version}</version>
            </dependency>
            <dependency>
              <groupId>ch.qos.logback</groupId>
              <artifactId>logback-classic</artifactId>
              <version>${logback.version}</version>
              <scope>runtime</scope>
            </dependency>
          </dependencies>
-->
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <dependencies>
    <dependency>
      <groupId>org.apache.myfaces.tobago</groupId>
      <artifactId>tobago-theme-charlotteville</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.myfaces.tobago</groupId>
      <artifactId>tobago-theme-roxborough</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.myfaces.tobago</groupId>
      <artifactId>tobago-theme-scarborough</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.myfaces.tobago</groupId>
      <artifactId>tobago-theme-speyside</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.myfaces.tobago</groupId>
      <artifactId>tobago-theme-standard</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.myfaces.tobago</groupId>
      <artifactId>tobago-core</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <scope>runtime</scope>
    </dependency>
  </dependencies>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <profiles>

    <profile>
      <id>jsf-provided</id>
      <activation>
        <property>
          <name>jsf</name>
          <value>provided</value>
        </property>
      </activation>
      <dependencies>
        <dependency>
          <groupId>org.apache.myfaces.core</groupId>
          <artifactId>myfaces-api</artifactId>
          <version>${myfaces20.version}</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>org.apache.myfaces.core</groupId>
          <artifactId>myfaces-impl</artifactId>
          <version>${myfaces20.version}</version>
          <scope>provided</scope>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>myfaces-2.0</id>
      <activation>
        <property>
          <name>!jsf</name>
        </property>
      </activation>
      <properties>
        <override-web-xml>../src/test/jetty/override-myfaces-web.xml</override-web-xml>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.apache.myfaces.core</groupId>
          <artifactId>myfaces-api</artifactId>
          <version>${myfaces20.version}</version>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>org.apache.myfaces.core</groupId>
          <artifactId>myfaces-impl</artifactId>
          <version>${myfaces20.version}</version>
          <scope>runtime</scope>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>myfaces-2.1</id>
      <activation>
        <property>
          <name>jsf</name>
          <value>myfaces-2.1</value>
        </property>
      </activation>
      <properties>
        <override-web-xml>../src/test/jetty/override-myfaces-web.xml</override-web-xml>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.apache.myfaces.core</groupId>
          <artifactId>myfaces-api</artifactId>
          <version>${myfaces21.version}</version>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>org.apache.myfaces.core</groupId>
          <artifactId>myfaces-impl</artifactId>
          <version>${myfaces21.version}</version>
          <scope>runtime</scope>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>myfaces-2.2</id>
      <activation>
        <property>
          <name>jsf</name>
          <value>myfaces-2.2</value>
        </property>
      </activation>
      <properties>
        <override-web-xml>../src/test/jetty/override-myfaces-web.xml</override-web-xml>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.apache.myfaces.core</groupId>
          <artifactId>myfaces-api</artifactId>
          <version>${myfaces22.version}</version>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>org.apache.myfaces.core</groupId>
          <artifactId>myfaces-impl</artifactId>
          <version>${myfaces22.version}</version>
          <scope>runtime</scope>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>myfaces-2.3</id>
      <activation>
        <property>
          <name>jsf</name>
          <value>myfaces-2.3</value>
        </property>
      </activation>
      <properties>
        <override-web-xml>../src/test/jetty/override-myfaces-web.xml</override-web-xml>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.apache.myfaces.core</groupId>
          <artifactId>myfaces-api</artifactId>
          <version>${myfaces23.version}</version>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>org.apache.myfaces.core</groupId>
          <artifactId>myfaces-impl</artifactId>
          <version>${myfaces23.version}</version>
          <scope>runtime</scope>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>mojarra-2.0</id>
      <activation>
        <property>
          <name>jsf</name>
          <value>mojarra-2.0</value>
        </property>
      </activation>
      <properties>
        <override-web-xml>../src/test/jetty/override-mojarra-web.xml</override-web-xml>
      </properties>
      <dependencies>
        <dependency>
          <groupId>com.sun.faces</groupId>
          <artifactId>jsf-api</artifactId>
          <version>${mojarra20.version}</version>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>com.sun.faces</groupId>
          <artifactId>jsf-impl</artifactId>
          <version>${mojarra20.version}</version>
          <scope>runtime</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>mojarra-2.1</id>
      <activation>
        <property>
          <name>jsf</name>
          <value>mojarra-2.1</value>
        </property>
      </activation>
      <properties>
        <override-web-xml>../src/test/jetty/override-mojarra-web.xml</override-web-xml>
      </properties>
      <dependencies>
        <dependency>
          <groupId>com.sun.faces</groupId>
          <artifactId>jsf-api</artifactId>
          <version>${mojarra21.version}</version>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>com.sun.faces</groupId>
          <artifactId>jsf-impl</artifactId>
          <version>${mojarra21.version}</version>
          <scope>runtime</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>mojarra-2.2</id>
      <activation>
        <property>
          <name>jsf</name>
          <value>mojarra-2.2</value>
        </property>
      </activation>
      <properties>
        <override-web-xml>../src/test/jetty/override-mojarra-web.xml</override-web-xml>
      </properties>
      <dependencies>
        <dependency>
          <groupId>com.sun.faces</groupId>
          <artifactId>jsf-api</artifactId>
          <version>${mojarra22.version}</version>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>com.sun.faces</groupId>
          <artifactId>jsf-impl</artifactId>
          <version>${mojarra22.version}</version>
          <scope>runtime</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>mojarra-2.3</id>
      <activation>
        <property>
          <name>jsf</name>
          <value>mojarra-2.3</value>
        </property>
      </activation>
      <properties>
        <override-web-xml>../src/test/jetty/override-mojarra-web.xml</override-web-xml>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>jakarta.faces</artifactId>
          <version>${mojarra23.version}</version>
          <optional>true</optional>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>liberty</id>
<!--
      <properties>
        <jsf>provided</jsf>
      </properties>
-->
      <build>
        <plugins>
          <plugin>
            <!-- The usage is documented in the FAQ -->
            <groupId>com.ibm.websphere.wlp.maven.plugins</groupId>
            <artifactId>liberty-maven-plugin</artifactId>
            <version>1.1</version>
            <configuration>
              <serverHome>${wlp.directory}</serverHome>
              <appArchive>${project.build.directory}/${project.build.finalName}.war</appArchive>
              <serverName>tobago</serverName>
              <!-- default debugging port is 7777 -->
              <!--<debug>true</debug>-->
            </configuration>
          </plugin>
        </plugins>
      </build>
      <pluginRepositories>
        <pluginRepository>
          <!-- For IBM Websphere Liberty Profile (WLP) -->
          <id>Liberty</id>
          <name>Liberty Repository</name>
          <url>http://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/maven/repository/</url>
          <layout>default</layout>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
          <releases>
            <enabled>true</enabled>
          </releases>
        </pluginRepository>
      </pluginRepositories>
    </profile>

    <profile>
      <id>jboss</id>
      <build>
        <plugins>
          <plugin>
            <!--
              Running examples with JBoss AS, try:
              mvn -Pjboss clean jboss-as:run -Djsf=provided
             -->
            <groupId>org.jboss.as.plugins</groupId>
            <artifactId>jboss-as-maven-plugin</artifactId>
            <version>7.9.Final</version>
          </plugin>
          <plugin>
            <!--
              Running examples with Wildfly, try:
              try: mvn -Pjboss clean wildfly:run -Djsf=provided
             -->
            <groupId>org.wildfly.plugins</groupId>
            <artifactId>wildfly-maven-plugin</artifactId>
            <version>2.0.2.Final</version>
          </plugin>
        </plugins>
      </build>
    </profile>

<!-- TBD: be needed for which cases?
    <profile>
      <id>303off</id>
      <dependencies>
        <dependency>
          <groupId>javax.validation</groupId>
          <artifactId>validation-api</artifactId>
          <version>1.0.0.GA</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-validator</artifactId>
          <version>4.2.0.Final</version>
          <scope>provided</scope>
        </dependency>
      </dependencies>
    </profile>
-->

  </profiles>
  

</project>
