<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.rhq</groupId>
         <artifactId>rhq-plugins-parent</artifactId>
         <version>4.3.0</version>
      </parent>

   <groupId>org.rhq</groupId>
   <artifactId>rhq-virt-plugin</artifactId>
   <packaging>jar</packaging>

   <name>RHQ Virtualization Plugin</name>
   <description>Plugin used to manage virtualization</description>

   <properties>
      <libvirt-java.version>0.4.1</libvirt-java.version>
   </properties>

   <dependencies>

      <dependency>
         <groupId>net.java.dev.jna</groupId>
         <artifactId>jna</artifactId>
         <version>${jna.version}</version>
      </dependency>

      <dependency>
         <groupId>org.libvirt</groupId>
         <artifactId>libvirt</artifactId>
         <version>${libvirt-java.version}</version>
      </dependency>

      <dependency>
         <groupId>jdom</groupId>
         <artifactId>jdom</artifactId>
         <version>1.0</version>
      </dependency>

    </dependencies>

    <build>

       <plugins>

          <plugin>
             <artifactId>maven-dependency-plugin</artifactId>
             <executions>
                <execution>
                   <id>copy-dependencies</id>
                   <phase>process-resources</phase>
                   <goals>
                      <goal>copy</goal>
                   </goals>
                   <configuration>
                      <artifactItems>
                      	<artifactItem>
					         <groupId>net.java.dev.jna</groupId>
					         <artifactId>jna</artifactId>
					         <version>${jna.version}</version>
					     </artifactItem>
                         <artifactItem>
                           <groupId>jdom</groupId>
                           <artifactId>jdom</artifactId>
                           <version>1.0</version>
                        </artifactItem>
                      	<artifactItem>
					         <groupId>org.libvirt</groupId>
					         <artifactId>libvirt</artifactId>
					         <version>${libvirt-java.version}</version>
					     </artifactItem>
                      </artifactItems>
                      <outputDirectory>${project.build.outputDirectory}/lib</outputDirectory>
                   </configuration>
                </execution>
             </executions>
          </plugin>

       </plugins>

    </build>

    <profiles>
       <profile>
          <id>integration-tests</id>
          <activation>
             <property>
                <name>maven.test.skip</name>
                <value>!true</value>
             </property>
          </activation>

          <build>
             <plugins>

          <!-- Integration testing voodoo to load and test this plugin with its plugin dependencies -->
          <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <skip>true</skip>
            </configuration>
             <executions>
                <execution>
                   <id>surefire-it</id>
                   <phase>integration-test</phase>
                   <goals>
                      <goal>test</goal>
                   </goals>
                   <configuration>
                      <skip>${maven.test.skip}</skip>
                      <excludedGroups>${rhq.testng.excludedGroups}</excludedGroups>
                      <useSystemClassLoader>false</useSystemClassLoader>
                      <argLine>-Dorg.hyperic.sigar.path=${basedir}/target/itest/lib</argLine>
                      <!--<argLine>-Dorg.hyperic.sigar.path=${basedir}/target/itest/lib -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y</argLine>-->
                      <systemProperties>
                         <property>
                            <name>project.artifactId</name>
                            <value>${project.artifactId}</value>
                         </property>
                         <property>
                            <name>project.version</name>
                            <value>${project.version}</value>
                         </property>
                      </systemProperties>
                   </configuration>
                </execution>
             </executions>
          </plugin>

          <plugin>
             <artifactId>maven-antrun-plugin</artifactId>
             <executions>
                <execution>
                   <phase>pre-integration-test</phase>
                   <configuration>
                      <tasks>
                         <echo>Setting up plugin dependencies for ${project.artifactId}-${project.version}.jar...</echo>
                         <property name="settings.localRepository" location="${user.home}/.m2/repository" />
                         <mkdir dir="target/itest" />
                         <mkdir dir="target/itest/plugins" />
                         <mkdir dir="target/itest/lib" />
                         <copy toDir="target/itest/plugins" flatten="true" verbose="true">
                            <fileset dir="${settings.localRepository}/">
                               <include name="org/jboss/on/on-platform-plugin/${project.version}/on-platform-plugin-${project.version}.jar" />
                            </fileset>
                            <fileset dir="${project.build.directory}">
                               <include name="${project.artifactId}-${project.version}.jar" />
                            </fileset>
                         </copy>
                         <unzip dest="target/itest/lib">
                            <fileset dir="${settings.localRepository}/org/hyperic/sigar-dist/${sigar.version}" includes="*.zip" />
                            <patternset>
                               <include name="**/lib/sigar.jar" />
                               <include name="**/lib/bcel*.jar" />
                               <include name="**/lib/*.so" />
                               <include name="**/lib/*.sl" />
                               <include name="**/lib/*.dll" />
                               <include name="**/lib/*.dylib" />
                            </patternset>
                         </unzip>
                         <move todir="target/itest/lib" flatten="true">
                            <fileset dir="target/itest/lib">
                               <include name="**/lib/*" />
                            </fileset>
                         </move>
                         <delete dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
                      </tasks>
                   </configuration>
                   <goals>
                      <goal>run</goal>
                   </goals>
                </execution>
             </executions>
          </plugin>

       </plugins>
    </build>
 </profile>
    <!-- This includes the tools.jar in the system classpath to avoid the unsatisfied link error on
       tools.jar dependencies that EMS was trying to load multiple times. -->
       <profile>
          <id>default-tools.jar</id>
          <activation>
             <property>
                <name>java.vendor</name>
                <value>Sun Microsystems Inc.</value>
             </property>
          </activation>

          <dependencies>
             <dependency>
                <groupId>com.sun</groupId>
                <artifactId>tools</artifactId>
                <version>1.4.2</version>
                <scope>system</scope>
                <systemPath>${java.home}/../lib/tools.jar</systemPath>
             </dependency>
          </dependencies>
       </profile>

       <profile>
          <id>dev</id>

          <properties>
             <rhq.rootDir>../../..</rhq.rootDir>
             <rhq.containerDir>${rhq.rootDir}/${rhq.defaultDevContainerPath}</rhq.containerDir>
             <rhq.deploymentDir>${rhq.containerDir}/jbossas/server/default/deploy/${rhq.earName}/rhq-downloads/rhq-plugins</rhq.deploymentDir>
          </properties>

          <build>
             <plugins>

                <plugin>
                  <artifactId>maven-antrun-plugin</artifactId>
                  <executions>

                      <execution>
                         <id>deploy</id>
                         <phase>compile</phase>
                         <configuration>
                           <tasks>
                             <mkdir dir="${rhq.deploymentDir}" />
                             <property name="deployment.file" location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
                             <echo>*** Updating ${deployment.file}...</echo>
                             <jar destfile="${deployment.file}" basedir="${project.build.outputDirectory}" />
                           </tasks>
                         </configuration>
                         <goals>
                           <goal>run</goal>
                         </goals>
                      </execution>

                     <execution>
                        <id>deploy-jar-meta-inf</id>
                        <phase>package</phase>
                        <configuration>
                          <tasks>
                             <property name="deployment.file" location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
                             <echo>*** Updating META-INF dir in ${deployment.file}...</echo>
                             <unjar src="${project.build.directory}/${project.build.finalName}.jar" dest="${project.build.outputDirectory}">
                               <patternset><include name="META-INF/**" /></patternset>
                             </unjar>
                             <jar destfile="${deployment.file}" manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF" update="true">
                             </jar>
                          </tasks>
                        </configuration>
                        <goals>
                          <goal>run</goal>
                        </goals>
                     </execution>

                      <execution>
                         <id>undeploy</id>
                         <phase>clean</phase>
                         <configuration>
                           <tasks>
                             <property name="deployment.file" location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
                             <echo>*** Deleting ${deployment.file}...</echo>
                             <delete file="${deployment.file}" />
                           </tasks>
                         </configuration>
                         <goals>
                           <goal>run</goal>
                         </goals>
                      </execution>

                    </executions>

                </plugin>

             </plugins>
          </build>
       </profile>
    <profile>
      <id>cobertura-plugins</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
        <build>
         <plugins>
           <plugin>
             <artifactId>maven-antrun-plugin</artifactId>
              <dependencies>
               <dependency>
                 <groupId>net.sourceforge.cobertura</groupId>
                 <artifactId>cobertura</artifactId>
                 <version>${cobertura.version}</version>
               </dependency>
             </dependencies>
             <executions>
              <execution>
               <id>cobertura-instrument</id>
               <phase>pre-integration-test</phase>
                 <configuration>
                   <tasks>
                   <!-- prepare directory structure for cobertura-->
                   <mkdir dir="target/cobertura" />
                   <mkdir dir="target/cobertura/backup" />
                   <!-- backup all classes so that we can instrument the original classes-->
                   <copy toDir="target/cobertura/backup" verbose="true" overwrite="true">
                      <fileset dir="target/classes">
                         <include name="**/*.class" />
                      </fileset>
                   </copy>
                   <!-- create a properties file and save there location of cobertura data file-->
                   <touch file="target/classes/cobertura.properties" />
                   <echo file="target/classes/cobertura.properties">net.sourceforge.cobertura.datafile=${project.build.directory}/cobertura/cobertura.ser</echo>
                   <taskdef classpathref="maven.plugin.classpath" resource="tasks.properties" />
                   <!-- instrument all classes in target/classes directory -->
                   <cobertura-instrument datafile="${project.build.directory}/cobertura/cobertura.ser" todir="${project.build.directory}/classes">
                     <fileset dir="${project.build.directory}/classes">
                        <include name="**/*.class" />
                      </fileset>
                    </cobertura-instrument>
                   </tasks>
                 </configuration>
               <goals>
                 <goal>run</goal>
               </goals>
              </execution>
              <execution>
               <id>cobertura-report</id>
               <phase>post-integration-test</phase>
                 <configuration>
                   <tasks>
                     <taskdef classpathref="maven.plugin.classpath" resource="tasks.properties" />
                     <!-- prepare directory structure for cobertura-->
                     <mkdir dir="target/cobertura" />
                     <mkdir dir="target/site/cobertura" />
                     <!-- restore classes from backup folder to classes folder -->
                     <copy toDir="target/classes" verbose="true" overwrite="true">
                      <fileset dir="target/cobertura/backup">
                         <include name="**/*.class" />
                      </fileset>
                     </copy>
                     <!-- delete backup folder-->
                     <delete dir="target/cobertura/backup" />
                     <!-- create a code coverage report -->
                     <cobertura-report format="html" datafile="${project.build.directory}/cobertura/cobertura.ser" destdir="${project.build.directory}/site/cobertura">
                      <fileset dir="${basedir}/src/main/java">
                         <include name="**/*.java" />
                      </fileset>
                     </cobertura-report>
                     <!-- delete cobertura.properties file -->
                     <delete file="target/classes/cobertura.properties" />
                   </tasks>
                 </configuration>
               <goals>
                 <goal>run</goal>
               </goals>
               </execution>
            </executions>
           </plugin>
          </plugins>
       </build>
     </profile>
    </profiles>

</project>
