<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2012, 2017 Eclipse Foundation and others.
  All rights reserved. This program and the accompanying materials
  are made available under the terms of the Eclipse Distribution License v1.0
  which accompanies this distribution, and is available at
  http://www.eclipse.org/org/documents/edl-v10.php
 
  Contributors:
     Igor Fedorenko - initial implementation
-->
<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>eclipse.jdt.core</artifactId>
    <groupId>eclipse.jdt.core</groupId>
    <version>4.8.0-SNAPSHOT</version>
  </parent>
  <groupId>org.eclipse.jdt</groupId>
  <artifactId>org.eclipse.jdt.compiler.tool</artifactId>
  <version>1.2.200-SNAPSHOT</version>
  <packaging>eclipse-plugin</packaging>

  <build>
    <plugins>
       <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-compiler-plugin</artifactId>
        <version>${tycho.version}</version>
        <configuration>
          <compilerArgs>
            <args>-endorseddirs</args>
            <args>${basedir}/lib</args>
          </compilerArgs>
          <!-- Use this form for Tycho 23 or greater -->
          <log>xml</log>
          <logDirectory>${project.build.directory}/compilelogs</logDirectory>
          <showWarnings>true</showWarnings>
          <excludeResources>
            <exclude>**/package.html</exclude>
          </excludeResources>
          <useProjectSettings>false</useProjectSettings>
         </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
		<configuration>
			<archive>
				<addMavenDescriptor>false</addMavenDescriptor>
			</archive>
		</configuration>
        <executions>
          <execution>
            <id>update-ecj</id>
            <phase>process-classes</phase>
            <configuration>
				<archive>
					<addMavenDescriptor>false</addMavenDescriptor>
				</archive>
              <target>

                <path id="ecj.id">
                  <fileset dir="${basedir}/../org.eclipse.jdt.core/target/">
                    <include name="org.eclipse.jdt.core-*-SNAPSHOT-batch-compiler.jar"/>
                  </fileset>
                </path> 

                <property name="ecj.file" refid="ecj.id"/>

                <echo message="UPDATE ${ecj.file}"/>

                <property name="unjarDestBin" value="${basedir}/tempbin"/>
                <mkdir dir="${unjarDestBin}"/>

                <unjar src="${ecj.file}" dest="${unjarDestBin}"/>

                <zip destfile="${ecj.file}" update="true">
                  <!-- old stuff -->
                  <fileset dir="${unjarDestBin}"/>	
                  <!-- new stuff: this plugin classes are here -->
                  <fileset dir="${basedir}/target/classes">
                    <include name="**/*"/>
                  </fileset>
                  <fileset dir="${basedir}/../org.eclipse.jdt.core/target/jdtCompilerAdapter.jar-classes">
                    <include name="**/*"/>
                  </fileset>
                </zip>
                <delete dir="${unjarDestBin}" failonerror="false"/>

                <!-- no source bundle for ecj, as jdt.core pom.xml does not generate it -->

              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
