<?xml version="1.0" encoding="UTF-8"?>
<!-- SPDX-FileCopyrightText: 2018-2021 SAP SE or an SAP affiliate company and Cloud Security Client Java contributors -->
<!-- SPDX-License-Identifier: Apache-2.0 -->
<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.sap.cloud.security.xsuaa</groupId>
	<artifactId>parent</artifactId>
	<version>2.13.2</version>
	<packaging>pom</packaging>

	<name>parent</name>
	<url>https://github.com/SAP/cloud-security-xsuaa-integration</url>
	<description>XSUAA authentication and authorization service integration libraries and samples for authenticating
		users and services
	</description>
	<licenses>
		<license>
			<name>The Apache Software License, Version 2.0</name>
			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
		</license>
	</licenses>

	<developers>
		<developer>
			<name>Identity Service Development</name>
			<email>xsuaa-development@sap.com</email>
			<organization>SAP SE</organization>
			<organizationUrl>https://www.sap.com</organizationUrl>
		</developer>
	</developers>

	<scm>
		<connection>scm:git:git://github.com/SAP/cloud-security-xsuaa-integration.git</connection>
		<developerConnection>scm:git:ssh//github.com/SAP/cloud-security-xsuaa-integration.git</developerConnection>
		<url>https://github.com/SAP/cloud-security-xsuaa-integration</url>
	</scm>

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

	<properties>
		<parent-groupId>com.sap.cloud.security</parent-groupId>
		<project.build.resourceEncoding>UTF-8</project.build.resourceEncoding>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.source.plugin.version>3.2.1</maven.source.plugin.version>
		<!-- make sure that spring core and spring boot versions are compatible-->
		<spring.boot.version>2.7.3</spring.boot.version>
		<spring.core.version>5.3.22</spring.core.version>
		<spring.security.version>5.7.3</spring.security.version>
		<spring.security.oauth2.version>2.5.2.RELEASE</spring.security.oauth2.version>
		<spring.security.jwt.version>1.1.1.RELEASE</spring.security.jwt.version>
		<reactor.version>3.4.22</reactor.version>
		<log4j2.version>2.18.0</log4j2.version>
		<slf4j.api.version>1.7.36</slf4j.api.version> <!--see also here http://www.slf4j.org/faq.html#changesInVersion18 -->
		<org.json.version>20220320</org.json.version>
		<sap.cloud.env.servicebinding.version>0.4.1</sap.cloud.env.servicebinding.version>
		<google.jsr305.version>3.0.2</google.jsr305.version>
		<apache.httpclient.version>4.5.13</apache.httpclient.version>
		<caffeine.version>2.9.3</caffeine.version>
		<commons.io.version>2.11.0</commons.io.version>
		<javax.servlet.api.version>4.0.1</javax.servlet.api.version>
		<junit.version>4.13.2</junit.version>
		<junit.version>4.13.2</junit.version>
		<junit-jupiter.version>5.7.2</junit-jupiter.version>
		<maven-surefire-plugin>3.0.0-M7</maven-surefire-plugin>
		<hamcrest.version>1.3</hamcrest.version>
		<mockito.version>3.12.4</mockito.version>
		<assertj.version>3.23.1</assertj.version>
		<reactor.test.version>3.4.22</reactor.test.version>
		<wiremock.version>2.33.2</wiremock.version>
		<javax.annotation.version>1.3.2</javax.annotation.version>
		<spotbugs.annotations.version>4.7.1</spotbugs.annotations.version>
		<spotbugs.version>4.7.1.1</spotbugs.version>
		<skipTests>false</skipTests>
		<jacoco.skip>${skipTests}</jacoco.skip>
	</properties>

	<modules>
		<module>api</module>
		<module>java-api</module>
		<module>env</module>
		<module>token-client</module>
		<module>java-security</module>
		<module>spring-security</module>
		<module>spring-security-compatibility</module>
		<module>spring-security-starter</module>
		<module>java-security-test</module>
		<module>spring-xsuaa</module>
		<module>spring-xsuaa-test</module>
		<module>spring-xsuaa-mock</module>
		<module>spring-xsuaa-starter</module>
		<module>bom</module>
		<module>spring-xsuaa-it</module>
    </modules>

	<dependencyManagement>
		<dependencies>
			<!-- Project BOM -->
			<dependency>
				<groupId>com.sap.cloud.security</groupId>
				<artifactId>java-bom</artifactId>
				<version>${project.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<!-- spring -->
			<!-- BOMs -->
			<dependency>
				<groupId>org.springframework.security</groupId>
				<artifactId>spring-security-bom</artifactId>
				<version>${spring.security.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-dependencies</artifactId>
				<version>${spring.boot.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<dependency>
				<groupId>com.sap.cloud.environment.servicebinding</groupId>
				<artifactId>java-bom</artifactId>
				<version>${sap.cloud.env.servicebinding.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<!-- spring core -->
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-core</artifactId>
				<version>${spring.core.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-web</artifactId>
				<version>${spring.core.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-aop</artifactId>
				<version>${spring.core.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-beans</artifactId>
				<version>${spring.core.version}</version>
			</dependency>
			<!-- spring security-->
			<dependency>
				<groupId>org.springframework.security</groupId>
				<artifactId>spring-security-jwt</artifactId>
				<version>${spring.security.jwt.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework.security.oauth</groupId>
				<artifactId>spring-security-oauth2</artifactId>
				<version>${spring.security.oauth2.version}</version>
				<exclusions>
					<exclusion>
					<groupId>org.codehaus.jackson</groupId>
					<artifactId>jackson-core-asl</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.codehaus.jackson</groupId>
					<artifactId>jackson-mapper-asl</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.springframework</groupId>
					<artifactId>spring-beans</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.springframework</groupId>
					<artifactId>spring-context</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.springframework</groupId>
					<artifactId>spring-aop</artifactId>
				</exclusion>
			</exclusions>
			</dependency>
			<dependency>
				<groupId>javax.annotation</groupId>
				<artifactId>javax.annotation-api</artifactId>
				<version>${javax.annotation.version}</version>
			</dependency>
			<!-- logging -->
			<dependency>
				<groupId>org.apache.logging.log4j</groupId>
				<artifactId>log4j-to-slf4j</artifactId>
				<version>${log4j2.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.logging.log4j</groupId>
				<artifactId>log4j-api</artifactId>
				<version>${log4j2.version}</version>
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-api</artifactId>
				<version>${slf4j.api.version}</version>
			</dependency>
			<dependency> <!-- only use in test scope -->
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-simple</artifactId>
				<version>${slf4j.api.version}</version>
				<scope>test</scope>
			</dependency>
			<!-- other -->
			<dependency>
				<groupId>org.json</groupId>
				<artifactId>json</artifactId>
				<version>${org.json.version}</version>
			</dependency>
			<dependency>
				<groupId>com.github.spotbugs</groupId>
				<artifactId>spotbugs-annotations</artifactId>
				<version>${spotbugs.annotations.version}</version>
				<optional>true</optional>
			</dependency>
			<dependency>
				<groupId>org.apache.httpcomponents</groupId>
				<artifactId>httpclient</artifactId>
				<version>${apache.httpclient.version}</version>
			</dependency>
			<dependency>
				<groupId>com.github.ben-manes.caffeine</groupId>
				<artifactId>caffeine</artifactId>
				<version>${caffeine.version}</version>
			</dependency>
			<dependency>
				<groupId>io.projectreactor</groupId>
				<artifactId>reactor-core</artifactId>
				<version>${reactor.version}</version>
			</dependency>
			<dependency>
				<groupId>commons-io</groupId>
				<artifactId>commons-io</artifactId>
				<version>${commons.io.version}</version>
			</dependency>
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>javax.servlet-api</artifactId>
				<version>${javax.servlet.api.version}</version>
			</dependency>
			<!--testing-->
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>${junit.version}</version>
			</dependency>
			<dependency>
				<groupId>org.junit</groupId>
				<artifactId>junit-bom</artifactId>
				<version>${junit-jupiter.version}</version>
			</dependency>
			<dependency>
				<groupId>org.hamcrest</groupId>
				<artifactId>hamcrest-all</artifactId>
				<version>${hamcrest.version}</version>
			</dependency>
			<dependency>
				<groupId>org.mockito</groupId>
				<artifactId>mockito-core</artifactId>
				<version>${mockito.version}</version>
			</dependency>
			<dependency>
				<groupId>org.assertj</groupId>
				<artifactId>assertj-core</artifactId>
				<version>${assertj.version}</version>
			</dependency>
			<dependency>
				<groupId>io.projectreactor</groupId>
				<artifactId>reactor-test</artifactId>
				<version>${reactor.test.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-starter-test</artifactId>
				<version>${spring.boot.version}</version>
			</dependency>
			<dependency>
				<groupId>com.github.tomakehurst</groupId>
				<artifactId>wiremock-jre8</artifactId>
				<version>${wiremock.version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<profiles>
		<profile>
			<id>default</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<build>
				<pluginManagement>
					<plugins>
						<plugin>
							<groupId>org.apache.maven.plugins</groupId>
							<artifactId>maven-surefire-plugin</artifactId>
							<version>${maven-surefire-plugin}</version>
						</plugin>
						<plugin>
							<groupId>org.apache.maven.plugins</groupId>
							<artifactId>maven-pmd-plugin</artifactId>
							<version>3.17.0</version>
							<configuration>
								<skip>${skipTests}</skip>
							</configuration>
							<executions>
								<execution>
									<phase>verify</phase>
									<goals>
										<goal>pmd</goal>
										<goal>cpd</goal>
									</goals>
								</execution>
							</executions>
						</plugin>
						<plugin>
							<groupId>org.jacoco</groupId>
							<artifactId>jacoco-maven-plugin</artifactId>
							<version>0.8.8</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>
										</rules>
									</configuration>
								</execution>
							</executions>
						</plugin>
						<plugin>
							<groupId>com.github.spotbugs</groupId>
							<artifactId>spotbugs-maven-plugin</artifactId>
							<version>${spotbugs.version}</version>
							<configuration>
								<skip>${skipTests}</skip>
								<effort>Max</effort>
								<threshold>Low</threshold>
							</configuration>
							<executions>
								<execution>
									<phase>verify</phase>
									<goals>
										<goal>spotbugs</goal>
									</goals>
								</execution>
							</executions>
						</plugin>
						<plugin>
							<groupId>org.owasp</groupId> <!--scans for vulnerabilities-->
							<artifactId>dependency-check-maven</artifactId>
							<version>7.1.1</version>
							<executions>
								<execution>
									<goals>
										<goal>check</goal>
									</goals>
								</execution>
							</executions>
							<configuration>
								<skip>${skipTests}</skip>
								<skipProvidedScope>true</skipProvidedScope>
								<failBuildOnCVSS>7</failBuildOnCVSS>
								<suppressionFile>${project.basedir}/../etc/suppression.xml</suppressionFile>
							</configuration>
						</plugin>
						<plugin>
							<groupId>org.apache.maven.plugins</groupId>
							<artifactId>maven-javadoc-plugin</artifactId>
							<version>3.4.1</version>
						</plugin>
						<plugin>
							<groupId>net.revelc.code.formatter</groupId>
							<artifactId>formatter-maven-plugin</artifactId>
							<version>2.16.0</version>
							<configuration>
								<encoding>${project.build.sourceEncoding}</encoding>
								<lineEnding>LF</lineEnding>
								<directories>
									<directory>${project.basedir}/src/main/java</directory>
									<directory>${project.basedir}/src/test/java</directory>
								</directories>
								<configFile>${project.basedir}/../etc/eclipse_settings.xml</configFile>
							</configuration>
							<executions>
								<execution>
									<phase>process-sources</phase>
									<goals>
										<goal>format</goal> <!-- run with mvn formatter:format -->
									</goals>
								</execution>
							</executions>
						</plugin>
						<plugin>
							<groupId>net.revelc.code</groupId>
							<artifactId>impsort-maven-plugin</artifactId>
							<version>1.6.2</version>
							<configuration>
								<groups>java.,javax.,org.,com.</groups>
								<staticGroups>java,*</staticGroups>
								<staticAfter>false</staticAfter>
								<removeUnused>true</removeUnused>
								<excludes>
									<exclude>**/test/resources/**</exclude>
								</excludes>
							</configuration>
							<executions>
								<execution>
									<id>sort-imports</id>
									<goals>
										<goal>sort</goal>
									</goals>
								</execution>
							</executions>
						</plugin>
					</plugins>
				</pluginManagement>
			</build>
		</profile>
		<profile>
			<id>release</id>
			<build>
				<plugins>
					<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-no-fork</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-javadoc-plugin</artifactId>
						<version>3.4.1</version>
						<executions>
							<execution>
								<id>attach-javadocs</id>
								<goals>
									<goal>jar</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-gpg-plugin</artifactId>
						<version>3.0.1</version>
						<executions>
							<execution>
								<id>sign-artifacts</id>
								<phase>verify</phase>
								<goals>
									<goal>sign</goal>
								</goals>
								<configuration>
									<!-- GPG keyname var set in the settings.xml maven file -->
									<keyname>${gpg.keyname}</keyname>
									<gpgArguments>
										<arg>--pinentry-mode</arg>
										<arg>loopback</arg>
									</gpgArguments>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<groupId>org.sonatype.plugins</groupId>
						<artifactId>nexus-staging-maven-plugin</artifactId>
						<version>1.6.13</version>
						<extensions>true</extensions>
						<configuration>
							<serverId>ossrh</serverId>
							<nexusUrl>https://oss.sonatype.org/</nexusUrl>
							<autoReleaseAfterClose>true</autoReleaseAfterClose>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
