<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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
      <artifactId>rhq-scripting-parent</artifactId>
      <groupId>org.rhq</groupId>
      <version>4.5.1</version>
   </parent>
   <artifactId>rhq-scripting-javascript</artifactId>
   <version>4.5.1</version>
   <name>RHQ Javascript support</name>
   <description>Provides RHQ scripting in Javascript using Rhino</description>

   <dependencies>
      <dependency>
         <groupId>${project.groupId}</groupId>
         <artifactId>rhq-scripting-api</artifactId>
         <version>${project.version}</version>
      </dependency>

      <dependency>
         <groupId>org.mozilla</groupId>
         <artifactId>rhino</artifactId>
         <version>1.7R4</version>
         <!-- we actually repackage Rhino inside our jar -->
         <scope>provided</scope> 
      </dependency>
   </dependencies>

   <build>
      <plugins>
         <plugin>
            <groupId>org.sonatype.plugins</groupId>
            <artifactId>jarjar-maven-plugin</artifactId>
            <version>1.5</version>
            <executions>
               <execution>
                  <phase>package</phase>
                  <goals>
                     <goal>jarjar</goal>
                  </goals>
                  <configuration>
                     <includes>
                        <include>org.mozilla:rhino</include>
                     </includes>
                     <rules>
                        <keep>
                           <pattern>*.**</pattern>
                        </keep>                          
                     </rules>
                  </configuration>
               </execution>
            </executions>
         </plugin>

         <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
               <excludedGroups>${rhq.testng.excludedGroups}</excludedGroups>
               <argLine>-Djava.security.manager
                  -Djava.security.policy==${project.build.testOutputDirectory}/allow-all.policy</argLine>
               <!-- This is important, because some of the tests try to exit 
                  the JVM. -->
               <failIfNoTests>true</failIfNoTests>
            </configuration>
         </plugin>
      </plugins>
   </build>

   <profiles>

      <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}/lib</rhq.deploymentDir>
         </properties>

         <build>
            <plugins>

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

                     <execution>
                        <id>deploy</id>
                        <phase>install</phase>
                        <configuration>
                           <tasks>
                              <mkdir dir="${rhq.deploymentDir}" />
                              <property name="deployment.file"
                                 location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
                              <echo>*** Updating
                                 ${deployment.file}...</echo>
                              <copy tofile="${deployment.file}" file="${project.build.directory}/${project.build.finalName}.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>1.9.4.1</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>
