<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2012, 2019 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.21.0-SNAPSHOT</version>
  </parent>
  <groupId>org.eclipse.jdt</groupId>
  <artifactId>org.eclipse.jdt.compiler.tool</artifactId>
  <version>1.3.0-SNAPSHOT</version>
  <packaging>eclipse-plugin</packaging>

  <build>
    <plugins>
       <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-compiler-plugin</artifactId>
        <version>${tycho.version}</version>
        <configuration>
          <!-- 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>
  <profiles>
	  <profile>
	    <id>eclipse-sign</id>
	    <build>
		    <plugins>
			    <plugin>
			      <artifactId>maven-antrun-plugin</artifactId>
			      <configuration>
			        <archive>
					  <addMavenDescriptor>false</addMavenDescriptor>
				    </archive>
			      </configuration>
			      <executions>
			        <execution>
			          <id>sign-ecj</id>
			          <phase>package</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"/>
			              <exec dir="${basedir}/../org.eclipse.jdt.core/target/" executable="curl">
			                   <arg value="--output"/>
			                   <arg value="${ecj.file}"/>
			                   <arg value="--form"/>
			                   <arg value="file=@${ecj.file}"/>
			                   <arg value="--silent"/>
			                   <arg value="--show-error"/>
			                   <arg value="--fail"/>
			                   <arg value="https://cbi.eclipse.org/jarsigner/sign"/>
			              </exec>
			            </target>
			          </configuration>
			          <goals>
			            <goal>run</goal>
			          </goals>
			        </execution>
			      </executions>
			    </plugin>
		    </plugins>
	    </build>
	  </profile>
  </profiles>
</project>
