<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2012, 2021 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.22.0-SNAPSHOT</version>
  </parent>
  <groupId>org.eclipse.jdt</groupId>
  <artifactId>org.eclipse.jdt.compiler.apt</artifactId>
  <version>1.4.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>
              <exclude>**/*api.jar</exclude>
            </excludeResources>
            <useProjectSettings>false</useProjectSettings>
          </configuration>
        </plugin>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
		<configuration>
			<archive>
				<addMavenDescriptor>false</addMavenDescriptor>
			</archive>
		</configuration>
        <executions>
          <execution>
            <id>natives</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}">
                    <include name="META-INF/services/**"/>
                  </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>
