Sample POM

<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.mycompany.rhq.agent.plugins</groupId>
    <artifactId>my-custom-plugin</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- This project has the custom plugin packaging -->
    <packaging>rhq-agent-plugin</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <rhq.version>4.11.0</rhq.version>
    </properties>

    <dependencies>

        <!-- Dependencies provided by the plugin container -->

        <dependency>
            <groupId>org.rhq</groupId>
            <artifactId>rhq-core-domain</artifactId>
            <version>${rhq.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.rhq</groupId>
            <artifactId>rhq-core-plugin-api</artifactId>
            <version>${rhq.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.rhq</groupId>
            <artifactId>rhq-core-native-system</artifactId>
            <version>${rhq.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
            <scope>provided</scope>
        </dependency>

        <!-- Dependencies required by your plugin -->
        <!-- All dependencies under RUNTIME scope will be included in the plugin archive -->

        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>commons-codec</groupId>
                    <artifactId>commons-codec</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.3</version>
        </dependency>

        <!-- Some test dependencies -->

        <dependency>
            <groupId>org.rhq</groupId>
            <artifactId>rhq-core-plugin-container</artifactId>
            <version>${rhq.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.rhq</groupId>
            <artifactId>test-utils</artifactId>
            <version>${rhq.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.rhq</groupId>
            <artifactId>rhq-core-plugin-container</artifactId>
            <version>${rhq.version}</version>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>

        <plugins>

            <!-- This is to get the Maven version available as a property  -->
            <!-- It will be used to customize the archive manifest file  -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>1.8</version>
                <executions>
                    <execution>
                        <phase>initialize</phase>
                        <goals>
                            <goal>maven-version</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- Here comes the RHQ agent plugin plugin -->
            <plugin>
                <groupId>org.rhq.maven.plugins</groupId>
                <artifactId>rhq-agent-plugin-plugin</artifactId>
                <version>0.2</version>
                <!-- Tell Maven that this plugin will extend the standard lifecycle and packaging -->
                <!-- Without this the build fails to recognize the custom packaging -->
                <extensions>true</extensions>
                <configuration>
                    <!-- Here comes the project manifest customization  -->
                    <archive>
                        <manifest>
                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        </manifest>
                        <manifestEntries>
                            <Maven-Version>${maven.version}</Maven-Version>
                            <Java-Version>${java.version}</Java-Version>
                            <Java-Vendor>${java.vendor}</Java-Vendor>
                            <Os-Name>${os.name}</Os-Name>
                            <Os-Arch>${os.arch}</Os-Arch>
                            <Os-Version>${os.version}</Os-Version>
                            <Build-Number>${buildNumber}</Build-Number>
                            <Build-Time>${buildTime}</Build-Time>
                        </manifestEntries>
                    </archive>
                    <deployDirectory>/path/to/dev/container/plugins/dir</deployDirectory>
                </configuration>
                <executions>
                    <!-- Here we configure the execution of optional mojos -->
                    <execution>
                        <id>validate-the-plugin</id>
                        <goals>
                            <goal>validate</goal>
                        </goals>
                        <phase>package</phase>
                        <configuration>
                            <rhqVersion>${rhq.version}</rhqVersion>
                        </configuration>
                    </execution>
                    <execution>
                        <id>deploy-to-dev-container</id>
                        <goals>
                            <goal>deploy</goal>
                        </goals>
                        <phase>package</phase>
                    </execution>
                    <execution>
                        <id>upload-to-rhq-server</id>
                        <goals>
                            <goal>upload</goal>
                        </goals>
                        <phase>package</phase>
                        <configuration>
                            <!-- Optional, defaults to http -->
                            <scheme>http</scheme>
                            <host>rhqserver.mycorp.int</host>
                            <port>7080</port> <!-- Optional, defaults to 7080 -->
                            <!-- The user must have appropriate permissions (MANAGE_SETTINGS) -->
                            <username>rhqadmin</username>
                            <password>secret</password>
                            <!-- Whether a plugin scan should be triggered on the server after upload. Optional, defaults to true -->
                            <startScan>true</startScan>
                            <!-- Whether to fail the build if an error occurs while uploading. Optional, defaults to false -->
                            <failOnError>false</failOnError>
                        </configuration>
                    </execution>
                    <execution>
                        <id>exec-cli-script</id>
                        <phase>package</phase>
                        <goals>
                            <goal>exec-cli-script</goal>
                        </goals>
                        <configuration>
                            <rhqVersion>${rhq.version}</rhqVersion>
                            <scriptFile>${basedir}/src/cli-scripts/sample.js</scriptFile>
                            <args>
                                <arg>Maven Invoker</arg>
                                <arg>${project.build.directory}/sample.js.out</arg>
                            </args>
                        </configuration>
                    </execution>
                    <execution>
                        <id>exec-cli-command</id>
                        <phase>package</phase>
                        <goals>
                            <goal>exec-cli-command</goal>
                        </goals>
                        <configuration>
                            <rhqVersion>${rhq.version}</rhqVersion>
                            <command>scriptUtil.saveBytesToFile(new java.lang.String("Hello!").getBytes(), "${project.build.directory}/cli-command.out")</command>
                        </configuration>
                    </execution>
                    <execution>
                        <id>setup-test-plugin-container</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>setup-test-plugin-container</goal>
                        </goals>
                        <configuration>
                            <rhqVersion>${rhq.version}</rhqVersion>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>itest/**</exclude>
                    </excludes>
                </configuration>
            </plugin>

            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <configuration>
                    <includes>
                        <include>itest/**</include>
                    </includes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                        <configuration>
                            <argLine>-Dorg.hyperic.sigar.path=${project.build.directory}/itest/lib</argLine>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>
</project>