<?xml version="1.0" encoding="UTF-8"?>
<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>
  
  <!-- PROJECT DESCRIPTION -->
  <groupId>org.polarsys.esf</groupId>
  <artifactId>esf-infra</artifactId>
  <version>0.7.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>ESF</name>
  <description>ESF description.</description>
    
  <!-- DEVELOPERS -->
  <developers>
    <developer>
      <id>JOD</id>
      <name>Jonathan Dumont</name>
      <email>jonathan.dumont@all4tec.net</email>
      <organization>ALL4TEC</organization>
      <organizationUrl>http://www.all4tec.net/</organizationUrl>
      <roles>
        <role>Project leader</role>
      </roles>
      <timezone>+1</timezone>
    </developer>
  
    <developer>
      <id>YUM</id>
      <name>Yupanqui Munoz Julho</name>
      <email>yupanqui.munozjulho@cea.fr</email>
      <organization>CEA List</organization>
      <organizationUrl>www-list.cea.fr/</organizationUrl>
      <roles>
        <role>Project leader</role>
      </roles>
      <timezone>+1</timezone>
    </developer>
  </developers>
  
  <!-- MODULES -->  
  <modules>
    <module>core</module>
    <module>p2</module>
    <!-- don't build RCP (not required, currently not working) -->
    <!-- <module>releng</module> -->
  </modules>
   
  <!-- REPOSITORIES -->
  <repositories> 
    <repository>
      <id>eclipse-2020-06</id>
      <layout>p2</layout>
      <url>http://download.eclipse.org/releases/2020-06</url>
    </repository>
  </repositories>
  
  <pluginRepositories>
	<pluginRepository>
		<id>eclipse-maven-releases</id>
		<url>https://repo.eclipse.org/content/repositories/releases/</url>
		<snapshots>
			<enabled>false</enabled>
		</snapshots>
	</pluginRepository>
    <!-- https://repo.maven.apache.org/maven2/ is being fetched by default -->
  </pluginRepositories>

  <!-- BUILD DEFINITION -->
  <build>
    <plugins>
  
      <!-- Tycho plugin -->
      <!-- This is the part which modify default packaging to add those specific to Eclipse RCP -->
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-maven-plugin</artifactId>
        <version>${tycho-version}</version>
        <extensions>true</extensions>
      </plugin>
    
      <!-- Tycho target platform configuration -->
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
          <artifactId>target-platform-configuration</artifactId>
          <version>${tycho-version}</version>
          <configuration>
            <resolver>p2</resolver>
            <environments>
              <environment>
                <os>win32</os>
                <ws>win32</ws>
                <arch>x86_64</arch>
              </environment>
            </environments>
          </configuration>
      </plugin>
      
      <!-- Plugin used to manage the versionning of tycho artifacts -->
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-versions-plugin</artifactId>
        <version>${tycho-version}</version>
      </plugin>
      
      <!-- Plugin used to check the license. -->
      <!-- NB: It's not configured to write the licence header automatically. -->
      <!-- Usage: mvn licence:check -->
      <plugin>
        <groupId>com.mycila</groupId>
        <artifactId>license-maven-plugin</artifactId>
        <version>2.11</version>
        <configuration>
          <header>${session.executionRootDirectory}/releng/licence/epl.header.txt</header>
          <useDefaultExcludes>true</useDefaultExcludes>
          <failIfMissing>true</failIfMissing>
          <!-- Avoid a strict check as the header comment contains also the contributors. -->
          <strictCheck>false</strictCheck>
          <aggregate>true</aggregate>
          <includes>
            <include>**/*.java</include>
          </includes>
          <excludes>
            <exclude>**/src/site/**</exclude>
            <exclude>**/target/**</exclude>
          </excludes>
          <properties>
            <year>2016</year>
          </properties>
        </configuration>
        <executions>
          <execution>
            <phase>process-sources</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  
  <profiles>
    <!-- Profile for tasks specific to the build on Eclipse CI instance:
		- packAndSign: produce a stable update site (signed). Used for releases (+ milestones) only.
	-->
    <profile>
      <id>sign</id>
      <build>
		<pluginManagement>
		  <plugins>
			<plugin>
			  <groupId>org.eclipse.cbi.maven.plugins</groupId>
			  <artifactId>eclipse-jarsigner-plugin</artifactId>
			  <version>${jarsigner-version}</version>
			</plugin>
		  </plugins>	
		</pluginManagement>

        <plugins>
          <plugin>
            <groupId>org.eclipse.cbi.maven.plugins</groupId>
            <artifactId>eclipse-jarsigner-plugin</artifactId>
            <version>${jarsigner-version}</version>
            <executions>
              <execution>
                <id>sign</id>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

          <!-- Make sure that Tycho generates its p2 metadata after the JAR has been packed -->
          <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-p2-plugin</artifactId>
            <version>${tycho-version}</version>
            <executions>
              <execution>
                <id>attach-p2-metadata</id>
                <phase>package</phase>
                <goals>
                  <goal>p2-metadata</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <defaultP2Metadata>false</defaultP2Metadata>
            </configuration>
          </plugin>
        </plugins>
      </build>

	  <activation>
		<property>
			<name>SIGN</name>
			<value>true</value>
		</property>
	  </activation>
    </profile>
    
 </profiles>
  
  <!-- PROPERTIES -->
  <properties>
    <!-- Product version displayed in the title bar, etc. -->
    <product.version>0.7.0</product.version>
    
    <!-- Tycho plugin version -->
    <tycho-version>2.7.5</tycho-version>
	
	<!-- eclipse-jarsigner plugin version -->
    <jarsigner-version>1.3.2</jarsigner-version>
      
    <!-- Enforce used of UTF encoding is mandatory. Otherwise, default platform encoding is used, and some issues appears with differents os constructions -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    
    <!-- Sonar properties -->
    <sonar.exclusions>**/src-gen/**/*</sonar.exclusions>
    <sonar.language>java</sonar.language>
  </properties>
  
</project>
