<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>cz.integsoft.mule.license</groupId>
	<artifactId>integsoft-mule-license-parent</artifactId>
	<version>2.0.0</version>
	<packaging>pom</packaging>
	<name>integsoft-license-parent</name>
	<description>License tooling</description>
	<organization>
		<name>Integsoft s.r.o.</name>
		<url>http://www.integsoft.cz/</url>
	</organization>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<javaRelease>8</javaRelease>
		<slf4j.api.version>1.7.25</slf4j.api.version>
		<log4j.version>2.17.2</log4j.version>
		<mule.version>4.2.2</mule.version>
		<jackson.version>2.13.3</jackson.version>
		<proguard.version>7.7.0</proguard.version>
		<license.api.version>2.0.0</license.api.version>
		<license.manager.version>2.0.0</license.manager.version>
		<license.tool.version>2.0.0</license.tool.version>
	</properties>
	<build>
		<extensions>
			<extension>
				<groupId>org.apache.maven.wagon</groupId>
				<artifactId>wagon-webdav-jackrabbit</artifactId>
				<version>3.4.1</version>
			</extension>
		</extensions>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>com.github.wvengen</groupId>
					<artifactId>proguard-maven-plugin</artifactId>
					<version>2.7.0</version>
					<executions>
						<execution>
							<phase>process-classes</phase>
							<goals>
								<goal>proguard</goal>
							</goals>
						</execution>
					</executions>
					<configuration>
						<proguardVersion>${proguard.version}</proguardVersion>
						<injar>classes</injar>
						<injarNotExistsSkip>true</injarNotExistsSkip>
						<obfuscate>true</obfuscate>
						<appendClassifier>false</appendClassifier>
						<options>
							<option>-keepdirectories</option>
							<option>-dontshrink</option>
							<option>-dontoptimize</option>
							<option>-target ${javaRelease}</option>
							<!-- This option will replace all strings in reflections method invocations with new class names. For example, invokes Class.forName('className') -->
							<option>-adaptclassstrings</option>
							<option>-renamesourcefileattribute SourceFile</option>
							<!-- This option will save all original annotations and etc. Otherwise all we be removed from files. -->
							<!-- LineNumberTable keeps line numbers in the stack trace -->
							<option>-keepattributes
								Exceptions,InnerClasses,Signature,Deprecated,*Annotation*,EnclosingMethod,SourceFile,LineNumberTable</option>
							<!-- This option will save all original names (without obfuscate). -->
							<option>-keepnames public class cz.integsoft.mule.license.**</option>
							<!-- Keep all interfaces and members -->
							<option>-keepnames interface cz.integsoft.mule.license.** { *; }</option>
							<!-- Preserve public, but obfuscate private and protected -->
							<option>-keepclassmembernames public class
								cz.integsoft.mule.license.** { !private *; !private *; public *;
								}</option>
							<!-- Keep module-info -->
							<option>-keep class module-info</option>
						</options>
						<libs>
							<lib>${java.home}/jmods</lib>
						</libs>
					</configuration>
					<dependencies>
						<dependency>
							<groupId>com.guardsquare</groupId>
							<artifactId>proguard-base</artifactId>
							<version>${proguard.version}</version>
						</dependency>
					</dependencies>
				</plugin>
			</plugins>
		</pluginManagement>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.14.0</version>
				<configuration>
					<release>${javaRelease}</release>
				</configuration>
			</plugin>
			<!-- Javadoc plugin -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>3.11.3</version>
				<configuration>
					<show>public</show>
					<destDir>docs</destDir>
					<!-- For Java 8 add this param to generate javadoc -->
					<additionalparam>-Xdoclint:none</additionalparam>
				</configuration>
				<executions>
					<execution>
						<id>make-javadoc</id>
						<phase>prepare-package</phase>
						<goals>
							<goal>javadoc</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<!-- Source plugin -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<version>3.3.1</version>
				<executions>
					<execution>
						<id>attach-sources</id>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<!-- Plugin for adding date, time and revision to manifest file -->
			<plugin>
				<groupId>pl.project13.maven</groupId>
				<artifactId>git-commit-id-plugin</artifactId>
				<version>4.0.5</version>
				<executions>
					<execution>
						<id>get-the-git-infos</id>
						<goals>
							<goal>revision</goal>
						</goals>
						<phase>initialize</phase>
					</execution>
				</executions>
				<configuration>
					<generateGitPropertiesFile>true</generateGitPropertiesFile>
					<generateGitPropertiesFilename>${project.build.outputDirectory}/META-INF/revision</generateGitPropertiesFilename>
					<includeOnlyProperties>
						<includeOnlyProperty>^git.build.(time|version)$</includeOnlyProperty>
						<includeOnlyProperty>^git.commit.id.(abbrev|full)$</includeOnlyProperty>
					</includeOnlyProperties>
					<commitIdGenerationMode>full</commitIdGenerationMode>
					<offline>true</offline>
					<format>properties</format>
					<injectAllReactorProjects>true</injectAllReactorProjects>
				</configuration>
			</plugin>
			<!-- The configuration of maven-jar-plugin -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>3.4.2</version>
				<!-- The configuration of the plugin -->
				<configuration>
					<!-- Configuration of the archiver -->
					<archive>
						<!-- Manifest specific configuration -->
						<manifestEntries>
							<Implementation-Build>${git.commit.id.abbrev} ${git.build.time}</Implementation-Build>
							<Version>${project.version}</Version>
							<Vendor>${project.organization.name}</Vendor>
							<Environment>${environment}</Environment>
						</manifestEntries>
					</archive>
					<classifier>${environment}</classifier>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-checkstyle-plugin</artifactId>
				<version>3.6.0</version>
				<dependencies>
					<dependency>
						<groupId>com.puppycrawl.tools</groupId>
						<artifactId>checkstyle</artifactId>
						<version>8.29</version>
					</dependency>
				</dependencies>
				<configuration>
					<excludes>**/module-info.java</excludes>
					<configLocation>https://checkstyle.integsoft.cz/java-checkstyle-config.xml</configLocation>
				</configuration>
				<executions>
					<execution>
						<id>validate</id>
						<phase>validate</phase>
						<configuration>
							<encoding>UTF-8</encoding>
							<consoleOutput>true</consoleOutput>
							<failsOnError>true</failsOnError>
							<linkXRef>false</linkXRef>
						</configuration>
						<goals>
							<goal>check</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-deploy-plugin</artifactId>
				<version>2.8.2</version>
				<executions>
					<execution>
						<id>default-deploy</id>
						<phase>deploy</phase>
						<goals>
							<goal>deploy</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-api</artifactId>
				<version>${slf4j.api.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.logging.log4j</groupId>
				<artifactId>log4j-core</artifactId>
				<version>${log4j.version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>com.fasterxml.jackson.datatype</groupId>
			<artifactId>jackson-datatype-jsr310</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-slf4j-impl</artifactId>
			<version>${log4j.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>com.lmax</groupId>
			<artifactId>disruptor</artifactId>
			<version>3.3.7</version>
			<scope>provided</scope>
		</dependency>
		<!--TODO: MULE-10837 -->
		<dependency>
			<groupId>org.mule.runtime</groupId>
			<artifactId>mule-module-service</artifactId>
			<version>${mule.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.mule.services</groupId>
			<artifactId>mule-service-scheduler</artifactId>
			<version>1.1.6</version>
			<classifier>mule-service</classifier>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.mule.services</groupId>
			<artifactId>mule-service-weave</artifactId>
			<classifier>mule-service</classifier>
			<version>2.1.4</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.mule.runtime</groupId>
			<artifactId>mule-core</artifactId>
			<version>${mule.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.mule.runtime</groupId>
			<artifactId>mule-module-spring-config</artifactId>
			<version>${mule.version}</version>
			<scope>provided</scope>
		</dependency>
		<!-- for testing -->
		<dependency>
			<groupId>org.mule.tests.plugin</groupId>
			<artifactId>mule-tests-component-plugin</artifactId>
			<version>${mule.version}</version>
			<classifier>mule-plugin</classifier>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mule.tests</groupId>
			<artifactId>mule-tests-runner</artifactId>
			<version>${mule.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mule.tests</groupId>
			<artifactId>mule-tests-functional</artifactId>
			<version>${mule.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mule.tests</groupId>
			<artifactId>mule-tests-unit</artifactId>
			<version>${mule.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.jayway.jsonpath</groupId>
			<artifactId>json-path</artifactId>
			<version>2.0.0</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.jayway.jsonpath</groupId>
			<artifactId>json-path-assert</artifactId>
			<version>2.0.0</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.skyscreamer</groupId>
			<artifactId>jsonassert</artifactId>
			<version>1.2.3</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.hamcrest</groupId>
			<artifactId>hamcrest-all</artifactId>
			<version>1.3</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.13</version>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<artifactId>hamcrest-core</artifactId>
					<groupId>org.hamcrest</groupId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>
	<scm>
		<connection />
		<developerConnection />
		<url />
	</scm>
	<profiles>
		<profile>
			<id>publicRelease</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<modules>
				<module>integsoft-license-api</module>
				<module>integsoft-license-manager</module>
			</modules>
		</profile>
		<profile>
			<id>privateRelease</id>
			<modules>
				<module>integsoft-license-api</module>
				<module>integsoft-license-manager</module>
				<module>integsoft-license-tool</module>
			</modules>
		</profile>
	</profiles>
</project>
