Example JSW and RPM
<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">
<profiles>
<profile>
<id>rpm</id>
<activation>
<property>
<name>env</name>
<value>prod</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.0-beta-1</version>
<configuration>
<repositoryLayout>flat</repositoryLayout>
<includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath>
<target>${project.build.directory}</target>
<defaultJvmSettings>
<initialMemorySize>256M</initialMemorySize>
<maxMemorySize>1024M</maxMemorySize>
<systemProperties>
<systemProperty>com.sun.management.jmxremote</systemProperty>
<systemProperty>com.sun.management.jmxremote.port=8999</systemProperty>
<systemProperty>com.sun.management.jmxremote.authenticate=false</systemProperty>
<systemProperty>com.sun.management.jmxremote.ssl=false</systemProperty>
</systemProperties>
<extraArguments>
<extraArgument>-server</extraArgument>
</extraArguments>
</defaultJvmSettings>
<daemons>
<daemon>
<id>${rpm.appname}</id>
<mainClass>com.company.MainClass</mainClass>
<commandLineArguments>
<commandLineArgument>start</commandLineArgument>
</commandLineArguments>
<platforms>
<platform>jsw</platform>
</platforms>
</daemon>
</daemons>
</configuration>
<executions>
<execution>
<id>libsAndScripts</id>
<phase>package</phase>
<goals>
<goal>generate-daemons</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<version>2.0-beta-1</version>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>rpm</goal>
</goals>
</execution>
</executions>
<configuration>
<release>1</release>
<copyright>${pom.inceptionYear}, ${pom.organization.name}</copyright>
<group>Applications/Engineering</group>
<mappings>
<mapping>
<directory>${rpm.path}/bin</directory>
<filemode>770</filemode>
<username>${rpm.username}</username>
<groupname>${rpm.groupname}</groupname>
<sources>
<source>
<location>${jswDir}/bin</location>
<excludes>
<exclude>*.bat</exclude>
<exclude>*.exe</exclude>
</excludes>
</source>
</sources>
</mapping>
<mapping>
<directory>${rpm.path}/conf</directory>
<configuration>true</configuration>
<filemode>660</filemode>
<username>${rpm.username}</username>
<groupname>${rpm.groupname}</groupname>
<sources>
<source>
<location>${distDir}/conf</location>
</source>
</sources>
</mapping>
<mapping>
<directory>${rpm.path}/lib</directory>
<filemode>660</filemode>
<username>${rpm.username}</username>
<groupname>${rpm.groupname}</groupname>
<sources>
<source>
<location>${jswDir}/lib</location>
<excludes>
<exclude>*.dll</exclude>
</excludes>
</source>
</sources>
</mapping>
<mapping>
<directory>${rpm.path}/repo</directory>
<filemode>660</filemode>
<username>${rpm.username}</username>
<groupname>${rpm.groupname}</groupname>
<artifact>
<classifiers>
<classifier/>
</classifiers>
</artifact>
<dependency/>
</mapping>
<mapping>
<directory>${rpm.path}/logs</directory>
<filemode>660</filemode>
<username>${rpm.username}</username>
<groupname>${rpm.groupname}</groupname>
</mapping>
</mappings>
<preinstall>echo Installing ${rpm.appname} ...</preinstall>
<postinstall>
echo Configuring ${rpm.appname} init scripts
#!/bin/sh
ln -s ${rpm.path}/bin/${rpm.appname} /etc/init.d/${rpm.appname}
#update-rc.d ${rpm.appname} start 20 3 5 . stop 20 0 1 2 4 6 .
# configure chkconfig install
if [ -x /sbin/chkconfig ]; then
/sbin/chkconfig --add ${rpm.appname}
else
ln -sf /etc/init.d/${rpm.appname} /etc/rc.d/rc3.d/S20${rpm.appname}
ln -sf /etc/init.d/${rpm.appname} /etc/rc.d/rc5.d/S20${rpm.appname}
ln -sf /etc/init.d/${rpm.appname} /etc/rc.d/rc0.d/K10${rpm.appname}
ln -sf /etc/init.d/${rpm.appname} /etc/rc.d/rc1.d/K10${rpm.appname}
ln -sf /etc/init.d/${rpm.appname} /etc/rc.d/rc2.d/K10${rpm.appname}
ln -sf /etc/init.d/${rpm.appname} /etc/rc.d/rc4.d/K10${rpm.appname}
ln -sf /etc/init.d/${rpm.appname} /etc/rc.d/rc6.d/K10${rpm.appname}
fi
</postinstall>
<preremove>
echo Removing ${rpm.appname} ...
#chkconfig scripts removal
#only on uninstall, not on upgrades.
if [ $1 = 0 ]; then
/etc/init.d/${rpm.appname} stop
if [ -x /sbin/chkconfig ]; then
echo "chkconfig --del ${rpm.appname}"
/sbin/chkconfig --del ${rpm.appname}
else
echo "Deleting /etc/rc.d/rc?.d/???${rpm.appname}"
rm -f /etc/rc.d/rc?.d/???${rpm.appname}
fi
fi
</preremove>
<postremove>
echo "Deleting /etc/init.d/${rpm.appname}"
rm /etc/init.d/${rpm.appname}
echo ${rpm.appname} is Successfully Removed!
</postremove>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<properties>
<jswDir>${project.build.directory}/jsw/${rpm.appname}</jswDir>
<rpm.username>app1</rpm.username>
<rpm.groupname>app1</rpm.groupname>
<rpm.appname>app1</rpm.appname>
<rpm.path>/opt/${rpm.appname}</rpm.path>
</properties>
</project>