<?xml version="1.0" encoding="UTF-8"?>
<!--
// ========================================================================
// Copyright (c) 2009 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
// ========================================================================
-->
<project>
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>jetty-osgi</artifactId>
    <groupId>org.eclipse.jetty.osgi</groupId>
    <version>7.5.1-SNAPSHOT</version>
    <relativePath>../../pom.xml</relativePath>
  </parent>
  <artifactId>org.eclipse.jetty.product</artifactId>
  <packaging>eclipse-repository</packaging>
  <description>Prototype: Eclipse Product for Jetty-Equinox, P2 able</description>
    <properties>
      <tycho.updatesite.with.jre>true</tycho.updatesite.with.jre>
      <tycho.publisher.with.statsUri>http://download.eclipse.org/stats</tycho.publisher.with.statsUri>
      <tycho.publisher.with.statsTrackedBundleIDs>org.eclipse.jetty.sdk,org.eclipse.jetty.starterkit.sdk,org.eclipse.jetty.starterkit,org.eclipse.jetty.tooling,org.eclipse.pde.junit4.runtime.addon,org.eclipse.pde.junit4.runtime.standalone</tycho.publisher.with.statsTrackedBundleIDs>
    </properties>
  <build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ssh-external</artifactId>
        <version>1.0-beta-6</version>
      </extension>
    </extensions>
  </build>
  <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>generate-test-sources</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <tasks>
                    <zip destfile="${project.build.directory}/repository.zip" basedir="${project.build.directory}/repository/"/>
                  </tasks>
                </configuration>
              </execution>
              <execution>
                 <id>replace-unsigned-repository-by-signed-one</id>
                 <phase>prepare-package</phase>
                 <goals>
                   <goal>run</goal>
                 </goals>
                 <configuration>
                   <tasks>
                     <move file="${project.build.directory}/repository" tofile="${project.build.directory}/repository-not-signed"/>
                     <move file="${project.build.directory}/checksumFix" tofile="${project.build.directory}/repository"/>
                   </tasks>
                 </configuration>
              </execution>
              <!-- Somehow this never worked. Replaced by a shell script executed at the end of the build. -->
              <!--execution>
                <id>deploy</id>
                <phase>verify</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <tasks>
                    <delete includeemptydirs="false">
                      <fileset
                        dir="/home/data/httpd/download.eclipse.org/jetty/updates/${p2-install-parent-folder-name}/${p2-install-folder-name}">
                        <include name="**" />
                      </fileset>
                    </delete>
                    <mkdir dir="/home/data/httpd/download.eclipse.org/jetty/updates/${p2-install-parent-folder-name}/${p2-install-folder-name}"/>
                    <copy includeemptydirs="false"
                      todir="/home/data/httpd/download.eclipse.org/jetty/updates/${p2-install-parent-folder-name}/${p2-install-folder-name}">
                      <fileset dir="target/repository">
                        <include name="**" />
                      </fileset>
                    </copy>
                  </tasks>
                </configuration>
              </execution-->
           </executions>
         </plugin>
         <plugin>
           <groupId>org.eclipse.dash.maven</groupId>
           <artifactId>eclipse-signing-maven-plugin</artifactId>
           <version>${signing-plugin-version}</version>
           <executions>
             <execution>
               <id>pack</id>
               <configuration>
                 <inputFile>${project.build.directory}/repository.zip</inputFile>
               </configuration>
               <phase>generate-test-resources</phase>
               <goals>
                 <goal>pack</goal>
               </goals>
             </execution>
             <execution>
               <id>sign</id>
               <configuration>
                 <inputFile>${project.build.directory}/packed/repository.zip</inputFile>
                 <signerInputDirectory>/home/data/httpd/download-staging.priv/rt/jetty/wksigning</signerInputDirectory>
               </configuration>
               <phase>generate-test-resources</phase>
               <goals>
                 <goal>sign</goal>
               </goals>
             </execution>
             <execution>
               <id>repack</id>
               <configuration>
                 <inputFile>${project.build.directory}/signed/site_assembly.zip</inputFile>
               </configuration>
               <phase>generate-test-resources</phase>
               <goals>
                 <goal>pack</goal>
               </goals>
             </execution>
						<!-- signing and pack alters tycho checksums so fix them -->
             <execution>
               <id>fixCheckSums</id>
               <configuration>
                 <inputFile>${project.build.directory}/packed/site_assembly.zip</inputFile>
               </configuration>
               <phase>generate-test-resources</phase>
               <goals>
                 <goal>fixCheckSums</goal>
               </goals>
             </execution>
           </executions>
         </plugin>
        </plugins>
       </build>
     </profile>
  </profiles>
</project>
