<!--
	This file is part of Burningwave Core.                                                                      
	                                                                                                            
	Author: Roberto Gentili                                                                                     
	                                                                                                            
	Hosted at: https://github.com/burningwave/core                                                              
	                                                                                                            
	- -                                                                                                          
	                                                                                                            
	The MIT License (MIT)                                                                                       
	                                                                                                            
	Copyright (c) 2019-2022 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>org.burningwave</groupId>
	<artifactId>core</artifactId>
	<version>12.62.5</version>
	<packaging>jar</packaging>

	<name>Burningwave Core</name>
	<description>
		An advanced and highly optimized Java building frameworks library: it is useful for scanning class paths, generating classes at runtime, facilitating the use of reflection, scanning the filesystem, executing stringified code and much more...
	</description>
	<url>https://burningwave.github.io/core/</url>

	<licenses>
		<license>
			<name>MIT License</name>
			<url>https://github.com/burningwave/core/blob/master/LICENSE</url>
			<distribution>repo</distribution>
		</license>
	</licenses>

	<organization>
		<name>Burningwave</name>
		<url>https://www.burningwave.org/</url>
	</organization>

	<developers>
		<developer>
			<name>Roberto Gentili</name>
			<id>roberto.gentili</id>
			<email>info@burningwave.org</email>
			<organization>Burningwave</organization>
			<organizationUrl>https://www.burningwave.org/</organizationUrl>
			<roles>
				<role>Administrator</role>
				<role>Developer</role>
			</roles>
		</developer>
		<developer>
			<name>Alessio Perrotta</name>
			<email>info@burningwave.org</email>
			<organization>Burningwave</organization>
			<organizationUrl>https://www.burningwave.org/</organizationUrl>
			<roles>
				<role>External relationship manager</role>
				<role>Developer</role>
			</roles>
		</developer>
	</developers>

	<properties>
		<copyright.holder>Roberto Gentili</copyright.holder>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<target_version>8</target_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>
		<project.generated.artifacts.prefix>bw</project.generated.artifacts.prefix>
		<repository.url>https://burningwave@github.com/burningwave/core.git</repository.url>

		<coveralls-maven-plugin.version>4.3.0</coveralls-maven-plugin.version>
		<logback.version>1.2.11</logback.version>
		<jacoco-maven-plugin.version>0.7.6.201602180812</jacoco-maven-plugin.version>
		<jakarta.validation.version>2.0.2</jakarta.validation.version>
		<junit-jupiter.version>5.9.1</junit-jupiter.version>
		<junit.version>1.9.1</junit.version>
		<burningwave-jvm-driver.version>8.14.0</burningwave-jvm-driver.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>3.0.0-M5</maven-surefire-plugin.version>
		<nexus-staging-maven-plugin.version>1.6.12</nexus-staging-maven-plugin.version>
		<slf4j.version>1.7.36</slf4j.version>
	</properties>

	<issueManagement>
		<system>github.com</system>
		<url>https://github.com/burningwave/core/issues</url>
	</issueManagement>

	<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>

	<scm>
		<connection>scm:git:${repository.url}</connection>
		<developerConnection>scm:git:${repository.url}</developerConnection>
		<url>https://github.com/burningwave/core</url>
		<tag>core-12.62.5</tag>
	</scm>

	<dependencies>
		
		<dependency>
			<groupId>org.burningwave</groupId>
			<artifactId>jvm-driver</artifactId>
			<version>${burningwave-jvm-driver.version}</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${slf4j.version}</version>
			<scope>provided</scope>
			<optional>true</optional>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jul-to-slf4j</artifactId>
			<version>${slf4j.version}</version>
			<scope>provided</scope>
			<optional>true</optional>
		</dependency>

		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-core</artifactId>
			<version>${logback.version}</version>
			<scope>provided</scope>
			<optional>true</optional>
		</dependency>

		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<version>${logback.version}</version>
			<scope>provided</scope>
			<optional>true</optional>
		</dependency>

		<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>jakarta.validation</groupId>
			<artifactId>jakarta.validation-api</artifactId>
			<version>${jakarta.validation.version}</version>
			<scope>test</scope>
		</dependency>

	</dependencies>

	<build>
		<resources>
			<resource>
				<directory>${project.basedir}</directory>
				<includes>
					<include>**LICENSE</include>
				</includes>
				<targetPath>META-INF</targetPath>
			</resource>
			<resource>
				<directory>${project.basedir}/src/main/resources</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>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>${maven-surefire-plugin.version}</version>
				<configuration>
					<systemProperties>
						<property>
							<name>java.util.logging.config.file</name>
							<value>src/test/resources/logging.properties</value>
						</property>
					</systemProperties>
					<skipTests>${skipTests}</skipTests>
					<excludes>
						<exclude>${project.test.excludes}</exclude>
					</excludes>
					<includes>
						<include>${project.test.includes}</include>
					</includes>
					<useModulePath>false</useModulePath>
				</configuration>
			</plugin>

			<plugin>
				<artifactId>maven-jar-plugin</artifactId>
				<version>${maven-jar-plugin.version}</version>
				<configuration>
					<excludes>
						<exclude>module-info.class</exclude>
						<exclude>META-INF/maven/</exclude>
					</excludes>
					<archive>
						<addMavenDescriptor>false</addMavenDescriptor>
						<manifest>
							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
							<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
						</manifest>
						<manifestEntries>
							<built-by>Burningwave</built-by>
							<Bundle-Category>Framework</Bundle-Category>
							<Bundle-License>https://github.com/burningwave/core/blob/master/LICENSE</Bundle-License>
							<Bundle-ManifestVersion>2</Bundle-ManifestVersion>
							<Bundle-Name>Core</Bundle-Name>
							<Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
							<Bundle-Vendor>Burningwave</Bundle-Vendor>
							<Bundle-Description>${project.description}</Bundle-Description>
							<Bundle-Version>${project.version}</Bundle-Version>
							<Require-Capability>osgi.ee;filter:="(&amp;(osgi.ee=JavaSE)(version=1.8))"</Require-Capability>
							<Import-Package>javax.tools,io.github.toolfactory.jvm;version="9.4.2",org.burningwave.jvm;version="8.14.0";resolution:=optional,io.github.toolfactory.jvm.util,org.slf4j;version="1.7.0";resolution:=optional</Import-Package>
							<Export-Package>org.burningwave.core;uses:="org.burningwave.core.classes,org.burningwave.core.concurrent,org.burningwave.core.function,org.burningwave.core.io,org.burningwave.core.iterable";version="12.45.3",org.burningwave.core.assembler;uses:="io.github.toolfactory.jvm,org.burningwave.core,org.burningwave.core.classes,org.burningwave.core.concurrent,org.burningwave.core.io,org.burningwave.core.iterable,org.burningwave.core.jvm";version="12.45.3",org.burningwave.core.classes;uses:="io.github.toolfactory.jvm.util,org.burningwave.core,org.burningwave.core.concurrent,org.burningwave.core.function,org.burningwave.core.io,org.burningwave.core.iterable";version="12.45.3",org.burningwave.core.concurrent;uses:="org.burningwave.core,org.burningwave.core.function";version="12.45.3",org.burningwave.core.function;version="12.45.3",org.burningwave.core.io;uses:="org.burningwave.core,org.burningwave.core.classes";version="12.45.3",org.burningwave.core.iterable;uses:="org.burningwave.core,org.burningwave.core.concurrent,org.burningwave.core.function";version="12.45.3",org.burningwave.core.jvm;uses:="org.burningwave.core,org.burningwave.core.io,org.burningwave.core.iterable";version="12.45.3"</Export-Package>
							<Multi-Release>true</Multi-Release>
						</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>20</stagingProgressTimeoutMinutes>
					<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>${maven-source-plugin.version}</version>
				<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>
					<encoding>UTF-8</encoding>
					<source>${target_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>
		<profile>
			<id>compile-with-jdk-8</id>
			<activation>
				<jdk>1.8</jdk>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-compiler-plugin</artifactId>
						<version>${maven-compiler-plugin.version}</version>
						<executions>
							<execution>
								<id>default-compile</id>
								<configuration>
									<source>${target_version}</source>
									<target>${target_version}</target>
									<excludes>
										<exclude>module-info.java</exclude>
									</excludes>
								</configuration>
							</execution>
							<execution>
								<id>default-testCompile</id>
								<configuration>
									<source>${target_version}</source>
									<target>${target_version}</target>
									<verbose>true</verbose>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>compile-with-jdk-9-or-later</id>
			<activation>
				<jdk>[9,)</jdk>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-compiler-plugin</artifactId>
						<version>${maven-compiler-plugin.version}</version>
						<executions>
							<execution>
								<id>default-compile</id>
								<configuration>
									<release>9</release>
									<verbose>true</verbose>
								</configuration>
							</execution>
							<execution>
								<id>default-testCompile</id>
								<configuration>
									<release>${target_version}</release>
									<verbose>true</verbose>
								</configuration>
							</execution>
							<execution>
								<id>base-compile</id>
								<goals>
									<goal>compile</goal>
								</goals>
								<!-- recompile everything for target VM except the module-info.java -->
								<configuration>
									<excludes>
										<exclude>module-info.java</exclude>
									</excludes>
									<source>${target_version}</source>
									<target>${target_version}</target>
									<verbose>true</verbose>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<artifactId>maven-antrun-plugin</artifactId>
						<version>${maven-antrun-plugin.version}</version>
						<executions>
							<execution>
								<id>add-module-info-to-jar</id>
								<phase>package</phase>
								<goals>
									<goal>run</goal>
								</goals>
								<configuration>
									<target>
										<jar update="true" destfile="${project.build.directory}/${project.build.finalName}.jar">
											<zipfileset prefix="META-INF/versions/9" dir="${project.build.directory}/classes" includes="module-info.class" />
										</jar>
									</target>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<!-- 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>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>