<?xml version="1.0" encoding="UTF-8"?>
<!--
    ========================================================================
    // Copyright (c) 2009-2010 Intalio, Inc.
    // All rights reserved. This program and the accompanying materials
    // are made available under the terms of the Eclipse Public License v1.0
    // and Apache License v2.0 which accompanies this distribution.
    // The Eclipse Public License is available at
    // http://www.eclipse.org/legal/epl-v10.html
    // The Apache License v2.0 is available at
    // http://www.opensource.org/licenses/apache2.0.php
    // You may elect to redistribute this code under either of these licenses.
    // Contributors:
    // Hugues Malphettes - initial API and implementation
    // Jesse Mcconnell - Signing
    ========================================================================
-->
<project>
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.eclipse.jetty.p2repo</groupId>
    <artifactId>jetty-p2repo</artifactId>
    <version>9.1.0-SNAPSHOT</version>
  </parent>
  <artifactId>org.eclipse.jetty.bundles.repo</artifactId>
  <!--packaging>eclipse-repository</packaging-->
  <packaging>eclipse-update-site</packaging>
  <profiles>
    <profile>
     <id>packAndSign</id>
      <activation>
        <property>
          <name>pack-and-sign</name>
          <value>true</value>
        </property>
      </activation>
      <build>
       <plugins>
         <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>zip-repository</id>
                <phase>package</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <tasks>
                    <zip destfile="${project.build.directory}/bundles-site.zip" basedir="${project.build.directory}/site/"/>
                  </tasks>
                </configuration>
              </execution>
              <execution>
                 <id>replace-unsigned-repository-by-signed-one</id>
                 <phase>verify</phase>
                 <goals>
                   <goal>run</goal>
                 </goals>
                 <configuration>
                   <tasks>
                     <move file="${project.build.directory}/site" tofile="${project.build.directory}/site-not-signed"/>
                     <move file="${project.build.directory}/checksumFix" tofile="${project.build.directory}/site"/>
                   </tasks>
                 </configuration>
              </execution>
           </executions>
         </plugin>
         <plugin>
           <groupId>org.eclipse.jetty.toolchain</groupId>
           <artifactId>eclipse-signing-maven-plugin</artifactId>
           <version>${signing-plugin-version}</version>
           <configuration>
                 <javaExecutable>/shared/common/jdk1.6.0-latest/bin/java</javaExecutable>
           </configuration>
           <executions>
             <execution>
               <id>pack</id>
               <configuration>
                 <inputFile>${project.build.directory}/bundles-site.zip</inputFile>
               </configuration>
               <phase>integration-test</phase>
               <goals>
                 <goal>pack</goal>
               </goals>
             </execution>
             <execution>
               <id>sign</id>
               <configuration>
                 <inputFile>${project.build.directory}/packed/bundles-site.zip</inputFile>
                 <signerInputDirectory>/home/data/httpd/download-staging.priv/rt/jetty/wksigning</signerInputDirectory>
               </configuration>
               <phase>integration-test</phase>
               <goals>
                 <goal>sign</goal>
               </goals>
             </execution>
             <execution>
               <id>repack</id>
               <configuration>
                 <inputFile>${project.build.directory}/signed/site_assembly.zip</inputFile>
               </configuration>
               <phase>integration-test</phase>
               <goals>
                 <goal>pack</goal>
               </goals>
             </execution>
             <execution>
               <id>fixCheckSums</id>
               <configuration>
                 <inputFile>${project.build.directory}/packed/site_assembly.zip</inputFile>
               </configuration>
               <phase>integration-test</phase>
               <goals>
                 <goal>fixCheckSums</goal>
               </goals>
             </execution>
           </executions>
         </plugin>
        </plugins>
       </build>
     </profile>
  </profiles>
</project>
