<?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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.github.srujankujmar</groupId>
	<artifactId>hyscale</artifactId>
	<packaging>pom</packaging>
	<version>0.9.8.1</version>

	<modules>
		<module>image-builder</module>
		<module>manifest-generator</module>
		<module>deployer</module>
		<module>workflow-controller</module>
		<module>commons</module>
		<module>dockerfile-generator</module>
		<module>service-spec</module>
		<module>packaging</module>
	</modules>

	<scm>
		<connection>scm:git:git://github.com/srujankujmar/hyscale.git</connection>
		<developerConnection>scm:git:ssh://github.com:srujankujmar/hyscale.git</developerConnection>
		<url>http://github.com/srujankujmar/hyscale</url>
	</scm>
	<description>Hyscale Project</description>
	<distributionManagement>
		<snapshotRepository>
			<id>ossrh</id>
			<url>https://oss.sonatype.org/content/repositories/snapshots</url>
			<layout>default</layout>
		</snapshotRepository>
		<repository>
			<id>ossrh</id>
			<name>Central Repository OSSRH</name>
			<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
		</repository>
	</distributionManagement>

	<name>hyscale</name>
	<url>https://www.hyscale.io/</url>

	<properties>
		<hyscale.max.lb.ready.timeout>90000</hyscale.max.lb.ready.timeout>
		<jdk.version>11</jdk.version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<slfj.log.version>1.7.26</slfj.log.version>
		<jackson.version>2.10.0</jackson.version>
		<javax.validation-api.version>2.0.1.Final</javax.validation-api.version>
		<javax.el-api.version>3.0.0</javax.el-api.version>
		<glassfish.web.javax.el-api.version>2.2.6</glassfish.web.javax.el-api.version>
		<javax.annotation-api.version>1.3.2</javax.annotation-api.version>
		<javax.json-api.version>1.1.4</javax.json-api.version>
		<json.schema.validator.version>2.2.11</json.schema.validator.version>
		<json-path-version>2.4.0</json-path-version>
		<google.gson.version>2.8.6</google.gson.version>
		<google.guava.version>28.2-jre</google.guava.version>
		<kubernetes.client.version>9.0.0</kubernetes.client.version>
		<apache.commons-lang3.version>3.9</apache.commons-lang3.version>
		<apache.commons.exec.version>1.3</apache.commons.exec.version>
		<commons-io.version>2.6</commons-io.version>
		<commons-cli.version>1.4</commons-cli.version>
		<commons-codec.version>1.12</commons-codec.version>
		<joda.time.version>2.9.3</joda.time.version>
		<flipkart.zjsonpatch.version>0.4.5</flipkart.zjsonpatch.version>
		<spullara.mustache.compiler.version>0.9.6</spullara.mustache.compiler.version>
		<picocli.spring-boot.version>4.4.0</picocli.spring-boot.version>
		<spring-boot.version>2.2.6.RELEASE</spring-boot.version>
		<spring-boot-maven-plugin.version>2.2.6.RELEASE</spring-boot-maven-plugin.version>
		<spring.core.version>5.2.6.RELEASE</spring.core.version>
		<hibernate-validator.version>6.0.17.Final</hibernate-validator.version>
		<org.skyscreamer.jsonassert.version>1.5.0</org.skyscreamer.jsonassert.version>
		<ocpsoft.prettytime.version>4.0.2.Final</ocpsoft.prettytime.version>
		<main.basedir>.</main.basedir>
		<main.dist.dir>${main.basedir}/_dist</main.dist.dir>
		<maven.build.timestamp.format>EEE d MMM yyyy HH:mm:ss</maven.build.timestamp.format>
		<copyright.year>2019</copyright.year>
		<copyright.company>Pramati Prism, Inc.</copyright.company>
		<release.name>First Light</release.name>
		<hspec.supported.version>0.6.2.1</hspec.supported.version>
		<gpg.keyname>5B5CB3D1BEA3DB64EB3EEEADB8FFCA81D9642E1D</gpg.keyname>
		<gpg.passphrase>${env.GPG_PASSPHRASE}</gpg.passphrase>
		<docker.java.version>3.1.5</docker.java.version>
		<sonar.organization>hyscale</sonar.organization>
		<sonar.host.url>https://sonarcloud.io</sonar.host.url>
		<jacoco.version>0.8.3</jacoco.version>
		<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
		<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
		<sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
		<sonar.language>java</sonar.language>
	</properties>

	<licenses>
		<license>
			<name>The Apache Software License, Version 2.0</name>
			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
			<distribution>repo</distribution>
		</license>
	</licenses>

	<developers>
		<developer>
			<name>The Hyscale Authors</name>
			<email>srujan.gourishetty@hyscale.io</email>
			<organization>Hyscale</organization>
			<organizationUrl>https://www.hyscale.io/</organizationUrl>
		</developer>
	</developers>

	<dependencies>
		<dependency>
			<groupId>com.github.docker-java</groupId>
			<artifactId>docker-java</artifactId>
			<version>${docker.java.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>${apache.commons-lang3.version}</version>
		</dependency>
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
			<version>${google.guava.version}</version>
		</dependency>
		<dependency>
			<groupId>javax.annotation</groupId>
			<artifactId>javax.annotation-api</artifactId>
			<version>${javax.annotation-api.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-core</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.dataformat</groupId>
			<artifactId>jackson-dataformat-yaml</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${slfj.log.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot</artifactId>
			<version>${spring-boot.version}</version>
		</dependency>
		<!-- Test dependencies start -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<version>${spring-boot.version}</version>
			<scope>test</scope>
		</dependency>
		<!-- Test dependencies end -->
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>io.kubernetes</groupId>
				<artifactId>client-java-api</artifactId>
				<version>${kubernetes.client.version}</version>
			</dependency>
			<dependency>
				<groupId>org.skyscreamer</groupId>
				<artifactId>jsonassert</artifactId>
				<version>${org.skyscreamer.jsonassert.version}</version>
			</dependency>
			<dependency>
				<groupId>org.glassfish</groupId>
				<artifactId>javax.json</artifactId>
				<version>${javax.json-api.version}</version>
			</dependency>
			<dependency>
				<groupId>commons-io</groupId>
				<artifactId>commons-io</artifactId>
				<version>${commons-io.version}</version>
			</dependency>
			<dependency>
				<groupId>com.github.spullara.mustache.java</groupId>
				<artifactId>compiler</artifactId>
				<version>${spullara.mustache.compiler.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-exec</artifactId>
				<version>${apache.commons.exec.version}</version>
	    </dependency>
            <dependency>
                <groupId>org.sonarsource.scanner.maven</groupId>
                <artifactId>sonar-maven-plugin</artifactId>
                <version>3.7.0.1746</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<resources>
			<!-- Filter resource files -->
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering>
			</resource>
		</resources>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.sonatype.plugins</groupId>
					<artifactId>nexus-staging-maven-plugin</artifactId>
					<version>1.6.8</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-release-plugin</artifactId>
					<version>2.5.3</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-deploy-plugin</artifactId>
					<version>2.8.2</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-source-plugin</artifactId>
					<version>2.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>2.9.1</version>
					<executions>
						<execution>
							<id>attach-javadocs</id>
							<goals>
								<goal>jar</goal>
							</goals>
							<configuration>
								<detectOfflineLinks>false</detectOfflineLinks>
							</configuration>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-clean-plugin</artifactId>
					<version>2.4.1</version>
					<configuration>
						<filesets>
							<fileset>
								<directory>${main.dist.dir}</directory>
							</fileset>
						</filesets>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-maven-plugin</artifactId>
					<version>${spring-boot-maven-plugin.version}</version>
					<executions>
						<execution>
							<goals>
								<goal>build-info</goal>
							</goals>
							<configuration>
								<additionalProperties>
									<encoding.source>UTF-8</encoding.source>
									<encoding.reporting>UTF-8</encoding.reporting>
									<hyscale.build.time>${maven.build.timestamp}</hyscale.build.time>
									<hyscale.release.name>${release.name}</hyscale.release.name>
									<hspec.version>${hspec.supported.version}</hspec.version>
								</additionalProperties>
							</configuration>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.8.0</version>
					<configuration>
						<source>${jdk.version}</source>
						<target>${jdk.version}</target>
					</configuration>
				</plugin>
				<plugin>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>3.0.0-M3</version>
                    <configuration>
                        <!-- Disable module path for testing -->
                        <useModulePath>false</useModulePath>
                    </configuration>
				</plugin>
				<plugin>
					<groupId>com.mycila.maven-license-plugin</groupId>
					<artifactId>maven-license-plugin</artifactId>
					<version>1.9.0</version>
					<configuration>
						<header>${main.basedir}/copyright/copyright.txt</header>
						<strictCheck>true</strictCheck>
						<includes>
							<include>**/*.java</include>
						</includes>
						<properties>
							<year>${copyright.year}</year>
							<company>${copyright.company}</company>
						</properties>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>

		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<version>2.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>
						<configuration>
							<detectOfflineLinks>false</detectOfflineLinks>
						</configuration>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>com.mycila.maven-license-plugin</groupId>
				<artifactId>maven-license-plugin</artifactId>
				<configuration>
					<header>${main.basedir}/copyright/copyright.txt</header>
					<strictCheck>true</strictCheck>
					<includes>
						<include>**/*.java</include>
					</includes>
					<properties>
						<year>${copyright.year}</year>
						<company>${copyright.company}</company>
					</properties>
				</configuration>
				<executions>
					<execution>
						<id>format-license</id>
						<phase>process-sources</phase>
						<goals>
							<goal>format</goal>
						</goals>
					</execution>
					<execution>
						<id>check-license</id>
						<phase>process-sources</phase>
						<goals>
							<goal>check</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
					<plugin>
                                <groupId>org.jacoco</groupId>
                                <artifactId>jacoco-maven-plugin</artifactId>
                                <version>${jacoco.version}</version>
                                <configuration>
                                        <skip>${maven.test.skip}</skip>
                                        <destFile>${basedir}/target/coverage-reports/jacoco-unit.exec</destFile>
                                        <dataFile>${basedir}/target/coverage-reports/jacoco-unit.exec</dataFile>
                                        <output>file</output>
                                        <append>true</append>
                                        <excludes>
                                            <exclude>*MethodAccess</exclude>
                                        </excludes>
                                </configuration>
						<executions>
							<execution>
                                        <id>jacoco-initialize</id>
                                        <goals>
                                            <goal>prepare-agent</goal>
                                        </goals>
                                        <phase>test-compile</phase>
                                    </execution>
                                    <execution>
                                        <id>jacoco-site</id>
								<phase>verify</phase>
								<goals>
                                            <goal>report</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
	<profiles>
		<profile>
			<id>release-sign-artifacts</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<build>
				<plugins>
					<plugin>
						<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>
									<!-- This is necessary for gpg to not try to use the pinentry programs -->
									<gpgArguments>
										<arg>--pinentry-mode</arg>
										<arg>loopback</arg>
									</gpgArguments>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
