Skip to content

JSW Daemon Webapp Parent POM Example

<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>
  <groupId>com.company</groupId>
  <artifactId>company-parent-jsw-daemon-webapp</artifactId>
  <version>1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>Company JSW Daemon Webapp Parent</name>

  <parent>
    <groupId>com.company</groupId>
    <artifactId>company-parent</artifactId>
    <version>29</version>
  </parent>

  <dependencies>
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty</artifactId>
      <version>${jetty.version}</version>
    </dependency>
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>start</artifactId>
      <version>${jetty.version}</version>
    </dependency>
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jsp-2.1</artifactId>
      <version>${jetty.version}</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.1</version>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>appassembler-maven-plugin</artifactId>
          <version>1.0</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>unix-maven-plugin</artifactId>
          <version>1.0-alpha-3-SNAPSHOT</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>appassembler-maven-plugin</artifactId>
        <configuration>
          <repositoryLayout>flat</repositoryLayout>
          <includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath>
          <target>${appassemblerTarget}</target>
          <assembleDirectory>${appassemblerAssembleDirectory}</assembleDirectory>
          <repoPath>lib</repoPath>

          <defaultJvmSettings>
            <initialMemorySize>${initialMemorySize}</initialMemorySize>
            <maxMemorySize>${maxMemorySize}</maxMemorySize>

            <systemProperties>
              <systemProperty>user.timezone=UTC</systemProperty>
            </systemProperties>
          </defaultJvmSettings>

          <daemons>
            <daemon>
              <id>${rpm.appname}</id>
              <mainClass>org.mortbay.start.Main</mainClass>
              <commandLineArguments>
                <commandLineArgument>src/main/unix/files/conf/jetty.xml</commandLineArgument>
                <commandLineArgument>src/main/unix/files/conf/jetty-logging.xml</commandLineArgument>
              </commandLineArguments>
              <platforms>
                <platform>jsw</platform>
              </platforms>
              <jvmSettings>
                <systemProperties>
                  <systemProperty>appserver.home=${rpm.path}</systemProperty>
                  <systemProperty>appserver.base=%WEBAPP_BASE%</systemProperty>
                  <systemProperty>jetty.logs=%WEBAPP_BASE%/logs</systemProperty>
                </systemProperties>
              </jvmSettings>
              <generatorConfigurations>
                <generatorConfiguration>
                  <generator>jsw</generator>
                  <configuration>
                    <property>
                      <name>configuration.directory.in.classpath.first</name>
                      <value>etc</value>
                    </property>
                    <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>%WEBAPP_BASE%/logs/wrapper.log</value>
                    </property>
                    <property>
                      <name>wrapper.app.parameter.2</name>
                      <value>%WEBAPP_BASE%/conf/jetty.xml</value>
                    </property>
                    <property>
                      <name>wrapper.app.parameter.3</name>
                      <value>%WEBAPP_BASE%/conf/jetty-logging.xml</value>
                    </property>
                    <property>
                      <name>app.base.envvar</name>
                      <value>WEBAPP_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>run.as.user.envvar</name>
                      <value>${rpm.username}</value>
                    </property>
                  </configuration>
                  <includes>
                    <include>linux-x86-32</include>
                    <include>linux-x86-64</include>
                    <include>windows-x86-32</include>
                  </includes>
                </generatorConfiguration>
              </generatorConfigurations>
            </daemon>
          </daemons>
        </configuration>
        <executions>
          <execution>
            <phase>generate-resources</phase>
            <goals>
              <goal>generate-daemons</goal>
              <goal>create-repository</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>unix-maven-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <contact>Erik Drolshammer</contact>
          <contactEmail>someEmail</contactEmail>
          <revision>${rpm.revision}</revision>
          <defaults>
            <fileAttributes>
              <user>${rpm.username}</user>
              <group>${rpm.groupname}</group>
              <mode>0664</mode>
            </fileAttributes>
            <directoryAttributes>
              <user>${rpm.username}</user>
              <group>${rpm.groupname}</group>
              <mode>0775</mode>
            </directoryAttributes>
          </defaults>
          <rpm>
            <softwareGroup>Applications/Engineering</softwareGroup>
          </rpm>
          <assembly>
            <copy-directory>
              <from>src/main/unix/files</from>
              <to>${rpm.path}/</to>
            </copy-directory>

            <copy-directory>
              <from>${appassemblerAssembleDirectory}</from>
              <to>${rpm.path}</to>
              <excludes>
                <exclude>**/maven-metadata-appassembler.xml</exclude>
              </excludes>
            </copy-directory>

            <copy-directory>
              <from>${webappsDir}/</from>
              <to>${rpm.path}/webapps/</to>
            </copy-directory>

            <mkdirs>
              <paths>
                <path>${rpm.path}/run</path>
                <path>${rpm.path}/logs</path>
              </paths>
            </mkdirs>

            <set-attributes>
              <basedir>${rpm.path}/bin</basedir>
              <fileAttributes>
                <user>${rpm.username}</user>
                <group>${rpm.groupname}</group>
                <mode>6774</mode>
              </fileAttributes>
            </set-attributes>
            <set-attributes>
              <basedir>${rpm.path}/logs</basedir>
              <fileAttributes>
                <group>${rpm.log.groupname}</group>
              </fileAttributes>
            </set-attributes>
          </assembly>
        </configuration>
      </plugin>

    </plugins>
  </build>
  <properties>
    <mainClassPackage>${pom.groupId}</mainClassPackage>
    <mainClass>${mainClassPackage}.SomeLauncher</mainClass>

    <rpm.appname>${pom.artifactId}</rpm.appname>
    <rpm.username>${rpm.appname}</rpm.username>
    <rpm.groupname>common-system-group</rpm.groupname>
    <rpm.log.groupname>${rpm.groupname}-log</rpm.log.groupname>
    <rpm.path>/usr/local/${rpm.appname}</rpm.path>
    <rpm.revision>1</rpm.revision>

    <appassemblerTarget>${project.build.directory}/appassembler</appassemblerTarget>
    <appassemblerAssembleDirectory>${appassemblerTarget}/jsw/${rpm.appname}</appassemblerAssembleDirectory>
    <webappsDir>${project.build.directory}/webapps</webappsDir>

    <initialMemorySize>128M</initialMemorySize>
    <maxMemorySize>1024M</maxMemorySize>

    <jetty.version>6.1.14</jetty.version>
  </properties>

</project>