<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright (C) 2009, Igor Fedorenko <igor@ifedorenko.com>

   All rights reserved. This program and the accompanying materials
   are made available under the terms of the Eclipse Public License v1.0
   which accompanies this distribution, and is available at
   http://www.eclipse.org/legal/epl-v10.html
  -->
<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.eclipse.mylyn.incubator</groupId>
    <artifactId>org.eclipse.mylyn.incubator-parent</artifactId>
    <version>3.7.0-SNAPSHOT</version>
  </parent>
  <artifactId>incubator-site</artifactId>
  <version>3.7.0-SNAPSHOT</version>
  <packaging>eclipse-update-site</packaging>
  <name>Mylyn Incubator for Mylyn 3.7</name>
  <properties>
    <qualifier>${project.unqualifiedVersion}</qualifier>
    <sign-dir>tools/mylyn/hudson/signing/incubator</sign-dir>
  </properties>
  <profiles>
    <profile>
      <id>hudson.eclipse.org</id>
      <activation>
		<property>
          <name>user.name</name>
          <value>hudsonbuild</value>
		</property>
      </activation>
      <properties>
		<dist.site>/home/data/httpd/download.eclipse.org/mylyn/incubator</dist.site>
		<dist.archive>${dist.site}/drops</dist.archive>
      </properties>
    </profile>
  </profiles>
  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>target-platform-configuration</artifactId>
        <version>${tycho-version}</version>		
        <configuration>
          <environments>
            <environment>
              <os>win32</os>
              <ws>win32</ws>
              <arch>x86</arch>
            </environment>
            <environment>
              <os>win32</os>
              <ws>win32</ws>
              <arch>x86_64</arch>
            </environment>
          </environments>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.2-beta-4</version>
        <configuration>
          <descriptors>
            <descriptor>assembly.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-resources</id>
            <phase>validate</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target/site</outputDirectory>
              <resources>
                <resource>
                  <directory>.</directory>
                  <includes>
                    <include>index.html</include>
					<include>web/*</include>
                  </includes>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>
	  <plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-antrun-plugin</artifactId>
		<version>1.6</version>
		<executions>
		  <execution>
			<id>pack-and-sign</id>
			<phase>install</phase>
			<configuration>
			  <target>
				<ant antfile="pack-and-sign/build.xml">
				  <property name="localRepository" value="${settings.localRepository}"/>
				  <property name="projectDir" value="${project.build.directory}"/>
				  <property name="signDir" value="${sign-dir}"/>
				  <property name="archiveDir" value="${dist.archive}"/>
				  <property name="siteDir" value="${dist.site}"/>
				  
				  <property name="dist" value="mylyn"/>
				  <property name="filter" value="mylyn"/>
				  <property name="repositoryName" value="${dist.repository}"/>
				  <property name="pack200" value="${dist.pack200}"/>
				  
				  <property name="skipSign" value="${sign.skip}"/>
				  <property name="skipPack" value="${pack.skip}"/>
				  <property name="skipPromote" value="${promote.skip}"/>
				  
				  <property name="version" value="${unqualifiedVersion}"/>
				  <property name="qualifier" value="${buildQualifier}"/>
				</ant>
				<echo file="${project.build.directory}/version.properties">
				  <![CDATA[
${unqualifiedVersion}
${buildQualifier}
]]>
				</echo>
			  </target>
			</configuration>
			<goals>
			  <goal>run</goal>
			</goals>
		  </execution>
		</executions>
	  </plugin>

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