<?xml version="1.0" encoding="UTF-8"?>
<!-- 
Copyright 2016 Anders Granau Høfft

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
 -->

<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>
	<groupId>com.github.hervian</groupId>
	<artifactId>lambda-factory</artifactId>
	<version>2.0.2</version>
	<packaging>jar</packaging>

	<name>lambda-factory</name>
	<description>A fast alternative to Java Reflection API's method invocation</description>
	<url>https://github.com/Hervian/lambda-factory</url>

  <developers>
    <developer>
      <id>anders</id>
      <name>Anders Høfft</name>
      <email>aghoefft@gmail.com</email>
      <timezone>+2</timezone>
    </developer>
  </developers>

	<licenses>
		<license>
			<name>Apache License, Version 2.0</name>
			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
			<distribution>repo</distribution>
		</license>
	</licenses>

	<scm>
		<connection>scm:git:https://github.com/Hervian/safety-mirror.git</connection>
		<url>http://github.com/hervian/safety-mirror</url>
		<developerConnection>scm:git:https://github.com/Hervian/safety-mirror.git</developerConnection>
		<tag>lambda-factory-2.0.2</tag>
	</scm>

	<distributionManagement>
		<snapshotRepository>
			<id>ossrh</id>
			<url>https://oss.sonatype.org/content/repositories/snapshots</url>
		</snapshotRepository>
		<repository>
			<id>ossrh</id>
			<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
		</repository>
	</distributionManagement>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<maven.compiler.source>1.9</maven.compiler.source>
		<maven.compiler.target>1.9</maven.compiler.target>
	</properties>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>javax.annotation</groupId>
			<artifactId>javax.annotation-api</artifactId>
			<version>1.3.2</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId> <!-- https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html -->
				<version>3.8.1</version>
				<executions> <!--https://issues.apache.org/jira/browse/MCOMPILER-97 -->
					<execution>
						<id>default-compile</id>
						<!-- phase and goal is inherited from the super pom for the default-compile (and are compile) -->
						<configuration>
							<compilerArgument>-proc:none</compilerArgument>
							<includes>
								<include>com/github/hervian/lambdas/util/MethodParameter.java</include>
								<include>com/github/hervian/lambdas/util/GenerateLambda.java</include>
								<include>com/github/hervian/lambdas/util/GenerateLambdaProcessor.java</include>
							</includes>
						</configuration>
					</execution>
					<execution>
						<id>compile-markerclass-and-process-annotation</id>
						<phase>compile</phase>
						<goals>
							<goal>compile</goal>
						</goals>
						<configuration>
							<annotationProcessors>
								<annotationProcessor>com.github.hervian.lambdas.util.GenerateLambdaProcessor</annotationProcessor>
							</annotationProcessors>
							<!-- <generatedSourcesDirectory>default is ${project.build.directory}/generated-sources/annotations</generatedSourcesDirectory> -->
							<includes>
								<include>com/github/hervian/lambdas/util/GenerateLambdaMarkerClass.java</include>
							</includes>
						</configuration>
					</execution>
					<execution>
						<id>compile-everything-else</id>
						<phase>compile</phase>
						<goals>
							<goal>compile</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<!-- Perform a release by calling 'mvn release:clean release:prepare' answering the prompts for versions and tags, followed by 'mvn release:perform'.
                     This execution will deploy to OSSRH and release to the Central Repository in one go, thanks to the usage of the Nexus Staging Maven Plugin with autoReleaseAfterClose set to true.
                 -->
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-release-plugin</artifactId>
				<version>2.5.3</version>
				<configuration>
					<autoVersionSubmodules>true</autoVersionSubmodules>
					<useReleaseProfile>false</useReleaseProfile>
					<releaseProfiles>release</releaseProfiles>
					<goals>deploy</goals>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<profiles>
		<profile>
			<!-- Note that this profile is not intended to be called directly (via '-P release'), rather one should use the maven-release-plugin, which in turn activates the release-profile.
                However, if one wants to handle the versioning manually, one can use this profile by calling:
             -->
			<id>release</id>
			<build>
				<!-- The plugins below have been added to satisfy the requirements to get the project added to the Maven Central Repository. Guide: https://central.sonatype.org/pages/requirements.html -->
				<plugins>
					<plugin>
						<groupId>org.sonatype.plugins</groupId>
						<artifactId>nexus-staging-maven-plugin</artifactId>
						<version>1.6.8</version>
						<extensions>true</extensions>
						<configuration>
							<serverId>ossrh</serverId>
							<nexusUrl>https://oss.sonatype.org/</nexusUrl>
							<autoReleaseAfterClose>true</autoReleaseAfterClose>
						</configuration>
					</plugin>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-source-plugin</artifactId>
						<version>3.2.1</version>
						<executions>
							<execution>
								<id>attach-sources</id>
								<goals>
									<goal>jar-no-fork</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-javadoc-plugin</artifactId>
						<version>3.2.0</version>
						<executions>
							<execution>
								<id>attach-javadocs</id>
								<goals>
									<goal>jar</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<!--Usage:
                            1. Install GnuPG
                            2. Create a key using the downloaded tool and store the private key safely (...)
                            3. Add the secret key to settings.xml
                            Guide: https://central.sonatype.org/pages/working-with-pgp-signatures.html
                            Troubleshooting: https://stackoverflow.com/questions/29885887/gpg-no-default-secret-key-error-using-maven
                        -->
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-gpg-plugin</artifactId>
						<version>1.6</version>
						<executions>
							<execution>
								<id>sign-artifacts</id>
								<phase>verify</phase>
								<goals>
									<goal>sign</goal>
								</goals>
								<configuration>
									<executable>C:\Program Files (x86)\GnuPG\bin\gpg.exe</executable>
									<keyname>2656E514CAC36531441C33EF130545B6CB763301</keyname>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
