<?xml version="1.0" encoding="UTF-8"?>
<!--
    Copyright (c) 2009, 2019 Xored Software Inc and others.
    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
     
    Contributors:
    	Xored Software Inc - initial API and implementation and/or initial documentation
 -->

<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>
    <groupId>org.eclipse.rcptt.external.dependencies</groupId>
  	<artifactId>bundles</artifactId>
    <version>2.4.3-SNAPSHOT</version>
  </parent>
  
  <artifactId>org.eclipse.rcptt.updates.aspectj.e44x</artifactId>
  <packaging>eclipse-plugin</packaging>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-clean-plugin</artifactId>
        <configuration>
          <filesets>
            <fileset>
              <directory>dependencies</directory>
              <includes>
                <include>**/*</include>
              </includes>
              <followSymlinks>false</followSymlinks>
            </fileset>
          </filesets>
        </configuration>
      </plugin>

      
      <plugin>
	<groupId>org.eclipse.tycho.extras</groupId>
	<artifactId>tycho-p2-extras-plugin</artifactId>
	<executions>
	  <execution>
	    <id>mirror-update-site</id>
	    <phase>generate-resources</phase>
	    <goals>
	      <goal>mirror</goal>
	    </goals>
	    <configuration>
	      <source>
		<repository>
		  <url>http://download.eclipse.org/tools/ajdt/44/dev/update</url>
		  <layout>p2</layout>
		</repository>
	      </source>
	      
	      <destination>${project.basedir}/dependencies</destination>
	      <followStrictOnly>true</followStrictOnly>
	      <includeOptional>false</includeOptional>
	      <includeNonGreedy>false</includeNonGreedy>
	      <latestVersionOnly>true</latestVersionOnly>
	      <mirrorMetadataOnly>false</mirrorMetadataOnly>
	      <compress>true</compress>
	      <append>false</append>
	      <includePacked>false</includePacked>

	      <ius>
		<iu><id>org.aspectj.runtime</id></iu>
		<iu><id>org.aspectj.weaver</id></iu>
		<iu><id>org.eclipse.equinox.weaving.aspectj</id></iu>
		<iu><id>org.eclipse.equinox.weaving.hook</id></iu>
	      </ius>
	    </configuration>
	  </execution>
	  <execution>
            <id>generate-full-metadata</id>
            <phase>compile</phase>
            <goals>
              <goal>publish-features-and-bundles</goal>
            </goals>
            <configuration>
              <sourceLocation>${project.basedir}/dependencies</sourceLocation>
              <metadataRepositoryLocation>${project.basedir}/dependencies</metadataRepositoryLocation>
              <artifactRepositoryLocation>${project.basedir}/dependencies</artifactRepositoryLocation>
            </configuration>
	  </execution>
	</executions>
	
      </plugin>

      <plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-antrun-plugin</artifactId>
	<executions>
	  <execution>
	    <phase>process-resources</phase>
	    <goals>
	      <goal>run</goal>
	    </goals>
	  </execution>
	</executions>
	<configuration>
	  <target>
	    <ant antfile="${basedir}/build.xml" target="main"/>
	  </target>
	</configuration>
	<dependencies>
          <dependency>
            <groupId>ant-contrib</groupId>
            <artifactId>ant-contrib</artifactId>
            <version>1.0b3</version>
	    <exclusions>
	      <exclusion>
		<groupId>ant</groupId>
		<artifactId>ant</artifactId>
	      </exclusion>
	    </exclusions>
          </dependency>
	  <dependency>
	    <groupId>org.apache.ant</groupId>
	    <artifactId>ant-nodeps</artifactId>
	    <version>1.8.1</version>
	  </dependency>
        </dependencies>
      </plugin>

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