<!-- 
	This file is part of ToolFactory JVM driver.                                                                      
	                                                                                                            
	Hosted at: https://github.com/toolfactory/jvm-driver                                                              
	                                                                                                            
	- -                                                                                                          
	                                                                                                            
	The MIT License (MIT)                                                                                       
	                                                                                                            
	Copyright (c) 2019-2021 Luke Hutchison, Roberto Gentili                                                                          
	                                                                                                            
	Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
	documentation files (the "Software"), to deal in the Software without restriction, including without        
	limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of   
	the Software, and to permit persons to whom the Software is furnished to do so, subject to the following    
	conditions:                                                                                                 
	                                                                                                            
	The above copyright notice and this permission notice shall be included in all copies or substantial        
	portions of the Software.                                                                                   
	                                                                                                            
	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT       
	LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO   
	EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
	AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
	OR OTHER DEALINGS IN THE SOFTWARE.
-->
<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>io.github.toolfactory</groupId>
	<artifactId>jvm-driver</artifactId>
	<version>4.0.0</version>

	<packaging>jar</packaging>

	<name>ToolFactory JVM Driver</name>
	<description>
		A driver to allow deep interaction with the JVM without any restrictions
	</description>
	<url>https://toolfactory.github.io/jvm-driver/</url>

	<licenses>
		<license>
			<name>MIT License</name>
			<url>https://github.com/toolfactory/jvm-driver/blob/master/LICENSE</url>
			<distribution>repo</distribution>
		</license>
	</licenses>

	<organization>
		<name>ToolFactory</name>
		<url>https://github.com/toolfactory</url>
	</organization>

	<developers>
		<developer>
			<name>Luke Hutchison</name>
			<email>tool.factory.heads@gmail.com</email>
			<organization>ToolFactory</organization>
			<organizationUrl>https://github.com/toolfactory</organizationUrl>
			<roles>
				<role>Administrator</role>
				<role>Developer</role>
			</roles>
		</developer>
		<developer>
			<name>Roberto Gentili</name>
			<id>roberto.gentili</id>
			<email>tool.factory.heads@gmail.com</email>
			<organization>ToolFactory</organization>
			<organizationUrl>https://github.com/toolfactory</organizationUrl>
			<roles>
				<role>Administrator</role>
				<role>Developer</role>
			</roles>
		</developer>
	</developers>

	<properties>
		<copyright.holder>Luke Hutchison, Roberto Gentili</copyright.holder>
		<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project_jdk_version>7</project_jdk_version>
		<javadocExecutable.relativePath>bin/javadoc</javadocExecutable.relativePath>
		<skipTests>true</skipTests>
		<project.test.testSuite>AllExceptHeavyTestsSuite</project.test.testSuite>
		<project.test.includes>**/${project.test.testSuite}.java</project.test.includes>
		<project.test.excludes>**/*Test.java</project.test.excludes>
		<repository.url>https://toolfactory@github.com/toolfactory/jvm-driver.git</repository.url>

		<coveralls-maven-plugin.version>4.3.0</coveralls-maven-plugin.version>
		<jacoco-maven-plugin.version>0.7.6.201602180812</jacoco-maven-plugin.version>
		<junit-jupiter.version>5.7.0</junit-jupiter.version>
		<junit.version>1.7.0</junit.version>
		<maven-antrun-plugin.version>3.0.0</maven-antrun-plugin.version>
		<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
		<maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version>
		<maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
		<maven-jar-plugin.version>3.2.0</maven-jar-plugin.version>
		<maven-javadoc-plugin.version>3.2.0</maven-javadoc-plugin.version>
		<maven-jxr-plugin.version>2.5</maven-jxr-plugin.version>
		<maven-release-plugin.version>2.5.3</maven-release-plugin.version>
		<maven-source-plugin.version>3.0.1</maven-source-plugin.version>
		<maven-scm-provider-gitexe.version>1.9.5</maven-scm-provider-gitexe.version>
		<maven-surefire-plugin.version>2.21.0</maven-surefire-plugin.version>
		<narcissus.version>1.0.1</narcissus.version>
		<nexus-staging-maven-plugin.version>1.6.8</nexus-staging-maven-plugin.version>
	</properties>

	<issueManagement>
		<system>github.com</system>
		<url>https://github.com/toolfactory/jvm-driver/issues</url>
	</issueManagement>

	<distributionManagement>
		<snapshotRepository>
			<id>ossrh</id>
			<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
		</snapshotRepository>
		<repository>
			<id>ossrh</id>
			<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
		</repository>
	</distributionManagement>

	<scm>
		<connection>scm:git:${repository.url}</connection>
		<developerConnection>scm:git:${repository.url}</developerConnection>
		<url>https://github.com/toolfactory/jvm-driver</url>
		<tag>jvm-driver-4.0.0</tag>
	</scm>

	<dependencies>

		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-engine</artifactId>
			<version>${junit-jupiter.version}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.junit.platform</groupId>
			<artifactId>junit-platform-engine</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.junit.platform</groupId>
			<artifactId>junit-platform-commons</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.junit.platform</groupId>
			<artifactId>junit-platform-runner</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>
		
		<dependency>
			<groupId>io.github.toolfactory</groupId>
			<artifactId>narcissus</artifactId>
			<version>${narcissus.version}</version>
		</dependency>

	</dependencies>

	<build>
		<resources>
			<resource>
				<directory>${project.basedir}/../</directory>
				<includes>
					<include>**LICENSE</include>
				</includes>
				<targetPath>META-INF</targetPath>
			</resource>
			<resource>
				<directory>${project.basedir}/../java-hook/src/main/java</directory>
				<includes>
					<include>**</include>
				</includes>
			</resource>
		</resources>
		<testResources>
			<testResource>
				<directory>${project.basedir}/src/test/java</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</testResource>
			<testResource>
				<directory>${project.basedir}/src/test/resources</directory>
			</testResource>
		</testResources>
		<plugins>
			<plugin>
				<artifactId>maven-antrun-plugin</artifactId>
				<version>${maven-antrun-plugin.version}</version>
				<executions>
					<execution>
						<goals>
							<goal>run</goal>
						</goals>
						<phase>
							compile
						</phase>
						<configuration>
							<target>
								<copy file="${project.basedir}/../java-hook/bin/java/lang/ConsulterRetrieverForJDK9.class" tofile="${project.build.directory}/classes/io/github/toolfactory/jvm/function/catalog/ConsulterRetrieverForJDK9.bwc" />
								<copy file="${project.basedir}/../java-hook/bin/java/lang/reflect/AccessibleSetterInvokerForJDK9.class" tofile="${project.build.directory}/classes/io/github/toolfactory/jvm/function/catalog/AccessibleSetterInvokerForJDK9.bwc" />
								<copy file="${project.basedir}/../java-hook/bin/jdk/internal/loader/ClassLoaderDelegateForJDK9.class" tofile="${project.build.directory}/classes/io/github/toolfactory/jvm/function/util/ClassLoaderDelegateForJDK9.bwc" />
							</target>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>${maven-compiler-plugin.version}</version>
				<configuration>
					<source>${project_jdk_version}</source>
					<target>${project_jdk_version}</target>
					<verbose>true</verbose>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>${maven-surefire-plugin.version}</version>
				<configuration>
					<skipTests>${skipTests}</skipTests>
					<excludes>
						<exclude>${project.test.excludes}</exclude>
					</excludes>
					<includes>
						<include>${project.test.includes}</include>
					</includes>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-jar-plugin</artifactId>
				<version>${maven-jar-plugin.version}</version>
				<configuration>
					<excludes>
						<exclude>jdk/</exclude>
						<exclude>java/</exclude>
						<exclude>META-INF/maven/</exclude>
						<exclude>**/*.c</exclude>
						<exclude>**/*.cpp</exclude>
						<exclude>**/*.h</exclude>
					</excludes>
					<archive>
						<addMavenDescriptor>false</addMavenDescriptor>
						<manifestEntries>
							<built-by>ToolFactory</built-by>
						</manifestEntries>
					</archive>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-deploy-plugin</artifactId>
				<version>${maven-deploy-plugin.version}</version>
				<executions>
					<execution>
						<id>default-deploy</id>
						<phase>deploy</phase>
						<goals>
							<goal>deploy</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-release-plugin</artifactId>
				<version>${maven-release-plugin.version}</version>
				<configuration>
					<localCheckout>true</localCheckout>
					<pushChanges>true</pushChanges>
					<mavenExecutorId>forked-path</mavenExecutorId>
					<arguments>-Dgpg.passphrase="${gpg.passphrase}"</arguments>
					<!-- <tagNameFormat>${project.artifactId}-${project.version}</tagNameFormat> -->
				</configuration>
				<dependencies>
					<dependency>
						<groupId>org.apache.maven.scm</groupId>
						<artifactId>maven-scm-provider-gitexe</artifactId>
						<version>${maven-scm-provider-gitexe.version}</version>
					</dependency>
				</dependencies>
			</plugin>
			<plugin>
				<groupId>org.sonatype.plugins</groupId>
				<artifactId>nexus-staging-maven-plugin</artifactId>
				<version>${nexus-staging-maven-plugin.version}</version>
				<extensions>true</extensions>
				<configuration>
					<!-- <stagingProgressTimeoutMinutes>30</stagingProgressTimeoutMinutes> -->
					<serverId>ossrh</serverId>
					<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
					<autoReleaseAfterClose>true</autoReleaseAfterClose>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<version>${maven-source-plugin.version}</version>
				<configuration>
					<excludes>
						<exclude>**/*.class</exclude>
					</excludes>
				</configuration>
				<executions>
					<execution>
						<id>attach-sources</id>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>${maven-javadoc-plugin.version}</version>
				<configuration>
					<javadocExecutable>${java.home}/${javadocExecutable.relativePath}</javadocExecutable>
					<encoding>UTF-8</encoding>
					<source>${project_jdk_version}</source>
				</configuration>
				<executions>
					<execution>
						<id>attach-javadoc</id>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

	<reporting>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jxr-plugin</artifactId>
				<version>${maven-jxr-plugin.version}</version>
			</plugin>
		</plugins>
	</reporting>

	<profiles>
		<!-- GPG Signature on release -->
		<profile>
			<id>release-sign-artifacts</id>
			<activation>
				<property>
					<name>performRelease</name>
					<value>true</value>
				</property>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-gpg-plugin</artifactId>
						<version>${maven-gpg-plugin.version}</version>
						<executions>
							<execution>
								<phase>verify</phase>
								<goals>
									<goal>sign</goal>
								</goals>
								<configuration>
									<gpgArguments>
										<arg>--pinentry-mode</arg>
										<arg>loopback</arg>
									</gpgArguments>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>run-coveralls</id>
			<activation>
				<activeByDefault>false</activeByDefault>
			</activation>
			<build>
				<plugins>
					<!-- Generate coveralls reports from CI server. -->
					<plugin>
						<groupId>org.eluder.coveralls</groupId>
						<artifactId>coveralls-maven-plugin</artifactId>
						<version>${coveralls-maven-plugin.version}</version>
						<configuration>
							<sourceDirectories>
								<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
							</sourceDirectories>
						</configuration>
					</plugin>
					<plugin>
						<groupId>org.jacoco</groupId>
						<artifactId>jacoco-maven-plugin</artifactId>
						<version>${jacoco-maven-plugin.version}</version>
						<executions>
							<execution>
								<id>prepare-agent</id>
								<goals>
									<goal>prepare-agent</goal>
								</goals>
							</execution>
						</executions>
						<configuration>
							<excludes>
								<exclude>**/*AccessibleSetterInvokerForJDK9.*</exclude>
								<exclude>**/*ClassLoaderDelegateForJDK9.*</exclude>
								<exclude>**/*ConsulterRetrieverForJDK9.*</exclude>
							</excludes>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
