<?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>
    <artifactId>continuum</artifactId>
    <groupId>org.apache.continuum</groupId>
    <version>1.3.4</version>
  </parent>
  <artifactId>continuum-jetty</artifactId>
  <packaging>pom</packaging>
  <name>Apache Continuum</name>
  <dependencies>
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty</artifactId>
    </dependency>
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>start</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.continuum</groupId>
      <artifactId>continuum-webapp</artifactId>
      <type>war</type>
    </dependency>
    <!-- Runtime dependencies that need to be included in the generated binaries -->
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty-naming</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jsp-2.1-jetty</artifactId>
      <scope>runtime</scope>
    </dependency>    
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty-plus</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.derby</groupId>
      <artifactId>derby</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>javax.mail</groupId>
      <artifactId>mail</artifactId>
      <scope>runtime</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>
       <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>appassembler-maven-plugin</artifactId>
        <configuration>
          <daemons>
            <daemon>
              <id>continuum</id>
              <mainClass>org.mortbay.start.Main</mainClass>
              <commandLineArguments>
                <commandLineArgument>conf/jetty.xml</commandLineArgument>
              </commandLineArguments>
              <platforms>
                <platform>jsw</platform>
              </platforms>              
              <generatorConfigurations>
                <generatorConfiguration>
                  <generator>jsw</generator>
                  <configuration>
                    <property>
                      <name>wrapper.console.loglevel</name>
                      <value>INFO</value>
                    </property>
                    <property>
                      <name>wrapper.java.additional.1.stripquotes</name>
                      <value>TRUE</value>
                    </property>
                    <property>
                      <name>set.default.REPO_DIR</name>
                      <value>lib</value>
                    </property>
                    <property>
                      <name>wrapper.logfile</name>
                      <value>%CONTINUUM_BASE%/logs/wrapper.YYYYMMDD.log</value>
                    </property>
                    <property>
                      <name>wrapper.logfile.rollmode</name>
                      <value>DATE</value>
                    </property>
                    <property>
                      <name>wrapper.app.parameter.2</name>
                      <value>%CONTINUUM_BASE%/conf/jetty.xml</value>
                    </property>
                    <property>
                      <name>app.base.envvar</name>
                      <value>CONTINUUM_BASE</value>
                    </property>
                    <property>
                      <name>wrapper.on_exit.default</name>
                      <value>RESTART</value>
                    </property>
                    <property>
                      <name>wrapper.on_exit.0</name>
                      <value>SHUTDOWN</value>
                    </property>
                    <property>
                      <name>wrapper.restart.delay</name>
                      <value>30</value>
                    </property>
                    <property>
                      <name>wrapper.java.maxmemory</name>
                      <value>256</value>
                    </property>
                  </configuration>
                  <includes>
                    <include>linux-x86-32</include>
                    <include>linux-x86-64</include>
                    <include>macosx-x86-universal-32</include>
                    <include>solaris-x86-32</include>
                    <include>solaris-sparc-32</include>
                    <include>solaris-sparc-64</include>
                    <include>windows-x86-32</include>
                  </includes>
                </generatorConfiguration>
              </generatorConfigurations>
              <jvmSettings>
                <systemProperties>
                  <systemProperty>appserver.home=.</systemProperty>
                  <systemProperty>appserver.base=%CONTINUUM_BASE%</systemProperty>
                  <!-- can't set this at present, it moves the database if CONTINUUM_BASE is not set
                  <systemProperty>derby.system.home=%CONTINUUM_BASE%/logs</systemProperty>
                  -->
                  <systemProperty>jetty.logs=%CONTINUUM_BASE%/logs</systemProperty>
                  <systemProperty>java.io.tmpdir=%CONTINUUM_BASE%/tmp</systemProperty>
                </systemProperties>
              </jvmSettings> 
            </daemon>
          </daemons>          
          <repoPath>lib</repoPath>
          <repositoryLayout>flat</repositoryLayout>
          <assembleDirectory>target/generated-resources/appassembler/jsw/continuum</assembleDirectory>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>generate-daemons</goal>
              <goal>create-repository</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <descriptor>src/main/assembly/bin.xml</descriptor>
          <finalName>apache-continuum-${version}</finalName>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>config</id>
            <phase>process-resources</phase>
            <configuration>
              <tasks>
                <copy todir="target/generated-resources/appassembler/jsw/continuum/conf">
                  <fileset dir="src/main/conf" />                  
                </copy>
                <mkdir dir="target/generated-resources/appassembler/jsw/continuum/logs" />      
              </tasks>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
