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

	<modelVersion>4.0.0</modelVersion>
	<groupId>org.gitlab4j</groupId>
	<artifactId>gitlab4j-api</artifactId>
	<packaging>jar</packaging>
	<version>4.14.12-SNAPSHOT</version>
	<name>GitLab4J-API - GitLab API Java Client</name>
	<description>GitLab4J-API (gitlab4j-api) provides a full featured Java client library for working with GitLab repositories and servers via the GitLab REST API.</description>
	<url>https://github.com/gitlab4j/gitlab4j-api</url>

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

	<licenses>
		<license>
			<name>The MIT License (MIT)</name>
			<url>http://opensource.org/licenses/MIT</url>
			<distribution>repo</distribution>
		</license>
	</licenses>

	<developers>
		<developer>
			<id>gmessner</id>
			<name>Greg Messner</name>
			<email>greg@messners.com</email>
		</developer>
	</developers>

	<properties>
		<java.level>8</java.level>
		<java.source.version>1.8</java.source.version>
		<java.target.version>1.8</java.target.version>

		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

		<jersey.version>2.29.1</jersey.version>
		<jackson.version>2.10.1</jackson.version>
		<servlet.version>4.0.3</servlet.version>
		<activation.version>1.2.1</activation.version>

		<junit.version>5.5.2</junit.version>
		<mockito.version>3.2.4</mockito.version>
		<hamcrest.version>1.3</hamcrest.version>
		<systemRules.version>1.19.0</systemRules.version>

		<changelog-lib.version>1.59</changelog-lib.version>

		<gitlab.version>12.1.1-ce.0</gitlab.version>
		<gitlab.autoremove-container>true</gitlab.autoremove-container>
		<gitlab.skip-docker-start>true</gitlab.skip-docker-start>
		<gitlab.port>8090</gitlab.port>
	</properties>

	<scm>
		<url>git@github.com:gitlab4j/gitlab4j-api.git</url>
		<connection>scm:git:git@github.com:gitlab4j/gitlab4j-api.git</connection>
		<developerConnection>scm:git:git@github.com:gitlab4j/gitlab4j-api.git</developerConnection>
		<tag>HEAD</tag>
	</scm>

	<build>
		<defaultGoal>package</defaultGoal>
		<plugins>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-release-plugin</artifactId>
				<configuration>
					<goals>deploy</goals>
				</configuration>
			</plugin>

			<plugin>
				<artifactId>maven-scm-plugin</artifactId>
				<version>1.9.5</version>
				<configuration>
					<tag>${project.artifactId}-${project.version}</tag>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.7.0</version>
				<configuration>
					<source>${java.source.version}</source>
					<target>${java.target.version}</target>
				</configuration>
				<executions>
					<execution>
						<id>default-compile</id>
						<configuration>
							<excludes>
								<exclude>**/module-info.java</exclude>
							</excludes>
						</configuration>
					</execution>
				</executions>
			</plugin>

			<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>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<version>3.0.0</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.0.0</version>
				<configuration>
					<source>8</source>
				</configuration>
				<executions>
					<execution>
						<id>attach-javadocs</id>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
				<version>0.8.3</version>
				<executions>
					<execution>
						<id>default-prepare-agent</id>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
					</execution>
					<execution>
						<id>default-report</id>
						<phase>prepare-package</phase>
						<goals>
							<goal>report</goal>
						</goals>
					</execution>
					<execution>
						<id>default-check</id>
						<goals>
							<goal>check</goal>
						</goals>
						<configuration>
							<rules>
								<!-- implementation is needed only for Maven 2 -->
								<rule implementation="org.jacoco.maven.RuleConfiguration">
									<element>BUNDLE</element>
									<limits>
										<!-- implementation is needed only for Maven 2 -->
										<limit implementation="org.jacoco.report.check.Limit">
											<counter>COMPLEXITY</counter>
											<value>COVEREDRATIO</value>
											<minimum>0.40</minimum>
										</limit>
									</limits>
								</rule>
							</rules>
						</configuration>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>3.0.0-M3</version>
				<configuration>
					<excludedGroups>org.gitlab4j.api.IntegrationTest</excludedGroups>
					<systemPropertyVariables>
						<jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
					</systemPropertyVariables>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-failsafe-plugin</artifactId>
				<version>3.0.0-M3</version>
				<configuration>
					<groups>org.gitlab4j.api.IntegrationTest</groups>
					<includes>
						<include>**/IntegrationTestSuite.java</include>
					</includes>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>integration-test</goal>
							<goal>verify</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-enforcer-plugin</artifactId>
				<version>3.0.0-M2</version>
				<configuration>
					<rules>
						<enforceBytecodeVersion>
							<maxJdkVersion>1.8</maxJdkVersion>
							<ignoreClasses>
								<ignoreClass>module-info</ignoreClass>
							</ignoreClasses>
						</enforceBytecodeVersion>
					</rules>
				</configuration>
				<executions>
					<execution>
						<id>enforce-bytecode-version</id>
						<goals>
							<goal>enforce</goal>
						</goals>
					</execution>
				</executions>
				<dependencies>
					<dependency>
						<groupId>org.codehaus.mojo</groupId>
						<artifactId>extra-enforcer-rules</artifactId>
						<version>1.2</version>
					</dependency>
				</dependencies>
			</plugin>

			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>animal-sniffer-maven-plugin</artifactId>
				<version>1.17</version>
				<executions>
					<execution>
						<goals>
							<goal>check</goal>
						</goals>
						<id>check</id>
					</execution>
				</executions>
				<configuration>
					<signature>
						<groupId>org.codehaus.mojo.signature</groupId>
						<artifactId>java1${java.level}</artifactId>
					</signature>
				</configuration>
			</plugin>

			<plugin>
				<groupId>io.fabric8</groupId>
				<artifactId>docker-maven-plugin</artifactId>
				<version>0.30.0</version>
				<configuration>
					<images>
						<image>
							<name>gitlab/gitlab-ce:${gitlab.version}</name>
							<alias>gitlab</alias>
							<run>
								<skip>${gitlab.skip-docker-start}</skip>
								<env>
									<GITLAB_OMNIBUS_CONFIG>gitlab_rails['initial_root_password']="password"; gitlab_rails['lfs_enabled']=false;</GITLAB_OMNIBUS_CONFIG>
								</env>
								<ports>
									<port>${gitlab.port}:80</port>
								</ports>
								<wait>
									<healthy>true</healthy>
									<time>300000</time>
								</wait>
							</run>
						</image>
					</images>
					<removeVolumes>true</removeVolumes>
				</configuration>
				<executions>
					<execution>
						<id>start</id>
						<phase>pre-integration-test</phase>
						<goals>
							<goal>start</goal>
						</goals>
					</execution>
					<execution>
						<id>stop</id>
						<phase>post-integration-test</phase>
						<goals>
							<goal>stop</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

		</plugins>

		<pluginManagement>
			<plugins>
				<!-- The se.bjurr.gitchangelog:git-changelog-maven-plugin needs to be in -->
				<!-- this section (pluginManagement) for it to work correctly. -->
				<plugin>
					<groupId>se.bjurr.gitchangelog</groupId>
					<artifactId>git-changelog-maven-plugin</artifactId>
					<version>${changelog-lib.version}</version>
					<executions>
						<execution>
							<goals>
								<goal>git-changelog</goal>
							</goals>
							<configuration>
								<readableTagName>gitlab4j-api-(.*)</readableTagName>
								<templateFile>CHANGELOG.mustache</templateFile>
							</configuration>
						</execution>
					</executions>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>

	<dependencies>

		<!-- javax.activation is present for Java 9+ compatibility -->
		<dependency>
			<groupId>jakarta.activation</groupId>
			<artifactId>jakarta.activation-api</artifactId>
			<version>${activation.version}</version>
		</dependency>

		<dependency>
			<groupId>com.fasterxml.jackson.jaxrs</groupId>
			<artifactId>jackson-jaxrs-json-provider</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish.jersey.inject</groupId>
			<artifactId>jersey-hk2</artifactId>
			<version>${jersey.version}</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish.jersey.core</groupId>
			<artifactId>jersey-client</artifactId>
			<version>${jersey.version}</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish.jersey.connectors</groupId>
			<artifactId>jersey-apache-connector</artifactId>
			<version>${jersey.version}</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish.jersey.media</groupId>
			<artifactId>jersey-media-multipart</artifactId>
			<version>${jersey.version}</version>
		</dependency>
		<dependency>
			<groupId>jakarta.servlet</groupId>
			<artifactId>jakarta.servlet-api</artifactId>
			<version>${servlet.version}</version>
		</dependency>

		<dependency>
			<groupId>org.junit.vintage</groupId>
			<artifactId>junit-vintage-engine</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-core</artifactId>
			<version>${mockito.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.hamcrest</groupId>
			<artifactId>hamcrest-all</artifactId>
			<version>${hamcrest.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.github.stefanbirkner</groupId>
			<artifactId>system-rules</artifactId>
			<version>${systemRules.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.googlecode.junit-toolbox</groupId>
			<artifactId>junit-toolbox</artifactId>
			<version>2.4</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<!--  Needed for animal-sniffer -->
			<dependency>
				<groupId>org.codehaus.mojo.signature</groupId>
				<artifactId>java18</artifactId>
				<version>1.0</version>
				<type>signature</type>
			</dependency>
		</dependencies>
	</dependencyManagement>

</project>