<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>4.0.6</version>
		<relativePath /> <!-- lookup parent from repository-->
	</parent>
	<groupId>in.infusers.library</groupId>
	<artifactId>infusers-library</artifactId>
	<version>2026.06.0004</version>
	<url>https://infusers.in</url>
	<packaging>jar</packaging>
	<name>infusers-library</name>
	<description>Infusers api core</description>
	
	<!-- Added required licenses section for Maven Central -->
	<licenses>
		<license>
			<name>Apache License, Version 2.0</name>
			<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
			<distribution>repo</distribution>
		</license>
	</licenses>
		
	<developers>
		<developer>
			<email>infusers.in@gmail.com</email>
			<name>Mr. Infuser</name>
			<organization>Infusers</organization>
			<organizationUrl>https://infusers.in</organizationUrl>
		</developer>
	</developers>
	<scm>
		<url>https://github.com/Infuser-s/infusers-library</url>
		<connection>scm:git:git://github.com/Infuser-s/infusers-library.git</connection>
		<developerConnection>
			scm:git:git@github.com:Infuser-s/infusers-library.git</developerConnection>
	</scm>
	<properties>
		<java.version>17</java.version>
		<springdoc.version>3.0.3</springdoc.version>
		<jsonwebtoken.version>0.13.0</jsonwebtoken.version>
		<aws.java.sdk.version>2.44.12</aws.java.sdk.version>
		<poi.version>5.5.1</poi.version>
		<javacrumbs.shedlock.version>7.7.0</javacrumbs.shedlock.version>
		<!-- Security: pin transitive versions to address CVEs -->
		<tomcat.version>11.0.22</tomcat.version>
		<netty.version>4.2.14.Final</netty.version>
		<postgresql.version>42.7.11</postgresql.version>
	</properties>
	<dependencies>
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-restclient</artifactId>
		</dependency>
		<dependency>
			<groupId>net.logstash.logback</groupId>
			<artifactId>logstash-logback-encoder</artifactId>
			<version>8.0</version>
		</dependency>		

	    <dependency>
	        <groupId>org.springframework.boot</groupId>
	        <artifactId>spring-boot-starter-json</artifactId>
	    </dependency>	
		<dependency>
		    <groupId>net.javacrumbs.shedlock</groupId>
		    <artifactId>shedlock-spring</artifactId>
		    <version>${javacrumbs.shedlock.version}</version>
		</dependency>
		<dependency>
		    <groupId>net.javacrumbs.shedlock</groupId>
		    <artifactId>shedlock-provider-redis-spring</artifactId>
		    <version>${javacrumbs.shedlock.version}</version>
		</dependency>	    		
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<scope>provided</scope>
		</dependency>	
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
		</dependency>
		<dependency>
			<!--Don't remove this, auto deployment in case of any changes will STOP working!!-->
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
	    <!-- Spring Boot Starter -->
	    <dependency>
	        <groupId>org.springframework.boot</groupId>
	        <artifactId>spring-boot-starter</artifactId>
	    </dependency>
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
		    <groupId>io.github.resilience4j</groupId>
		    <artifactId>resilience4j-spring-boot4</artifactId>
		    <version>2.4.0</version>
		    <exclusions>
		        <exclusion>
		            <groupId>org.jetbrains.kotlin</groupId>
		            <artifactId>kotlin-stdlib-jdk8</artifactId>
		        </exclusion>
		        <exclusion>
		            <groupId>org.jetbrains.kotlin</groupId>
		            <artifactId>kotlin-stdlib</artifactId>
		        </exclusion>
		        <exclusion>
		            <groupId>org.jetbrains.kotlin</groupId>
		            <artifactId>kotlin-stdlib-jdk7</artifactId>
		        </exclusion>
		    </exclusions>		    
		</dependency>	
		<dependency>
			<groupId>org.apache.httpcomponents.client5</groupId>
			<artifactId>httpclient5</artifactId>
		</dependency>
		<dependency>
			<!--Runtime-->
			<groupId>jakarta.xml.bind</groupId>
			<artifactId>jakarta.xml.bind-api</artifactId>
		</dependency>
	    <dependency>
			<!--Runtime-->			
	        <groupId>org.glassfish.jaxb</groupId>
	        <artifactId>jaxb-runtime</artifactId>
	    </dependency>		
		<dependency>
			<!--Runtime-->
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
		</dependency>
		<dependency>
			<!--Runtime-->
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
		</dependency>
		<dependency>
			<groupId>org.jsoup</groupId>
			<artifactId>jsoup</artifactId>
			<version>1.22.2</version>
		</dependency>
	    <!-- Apache POI for Excel handling -->
	    <dependency>
	        <groupId>org.apache.poi</groupId>
	        <artifactId>poi</artifactId>
			<version>${poi.version}</version>	        
	    </dependency>
	    <dependency>
	        <groupId>org.apache.poi</groupId>
	        <artifactId>poi-ooxml</artifactId>
			<version>${poi.version}</version>	        
	    </dependency>		
		<dependency>
			<groupId>org.apache.maven</groupId>
			<artifactId>maven-core</artifactId>
			<version>3.9.16</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-security</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
		</dependency>
		<!-- send email -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-mail</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
		</dependency>
		<dependency>
		    <groupId>io.jsonwebtoken</groupId>
		    <artifactId>jjwt-api</artifactId>
			<version>${jsonwebtoken.version}</version>
		</dependency>		
		<dependency>
			<groupId>io.jsonwebtoken</groupId>
			<artifactId>jjwt-impl</artifactId>
			<version>${jsonwebtoken.version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>io.jsonwebtoken</groupId>
			<artifactId>jjwt-jackson</artifactId>
			<version>${jsonwebtoken.version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-cache</artifactId>
		</dependency>
		<dependency>
			<groupId>com.azure</groupId>
			<artifactId>azure-identity</artifactId>
			<version>1.18.3</version>
		</dependency>
		<dependency>
			<groupId>com.azure</groupId>
			<artifactId>azure-security-keyvault-secrets</artifactId>
			<version>4.10.7</version>
		</dependency>
		<dependency>
			<groupId>com.google.cloud</groupId>
			<artifactId>google-cloud-secretmanager</artifactId>
			<version>2.92.0</version>
			<exclusions>
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
		  	<groupId>software.amazon.awssdk</groupId>
		  	<artifactId>secretsmanager</artifactId>
			<version>${aws.java.sdk.version}</version>
		</dependency>				
		<dependency>
			<groupId>software.amazon.awssdk</groupId>
			<artifactId>s3</artifactId>
			<version>${aws.java.sdk.version}</version>
		</dependency>
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
		</dependency>
		<dependency>
			<groupId>com.google.api-client</groupId>
			<artifactId>google-api-client</artifactId>
			<version>2.9.0</version>
		</dependency>
		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>io.lettuce</groupId>
			<artifactId>lettuce-core</artifactId>
		</dependency>
	    <!-- Jackson for JSON serialization -->
	    <dependency>
	        <groupId>com.fasterxml.jackson.datatype</groupId>
	        <artifactId>jackson-datatype-jsr310</artifactId>
	    </dependency>		
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springdoc</groupId>
			<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
			<version>${springdoc.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springdoc</groupId>
			<artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
			<version>${springdoc.version}</version>
		</dependency>
		<dependency>
		    <groupId>jakarta.el</groupId>
		    <artifactId>jakarta.el-api</artifactId>
		    <version>6.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-validation</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-amqp</artifactId>
		</dependency>	
		<dependency>
		    <groupId>org.apache.commons</groupId>
    		<artifactId>commons-math3</artifactId>
    		<version>3.6.1</version>
		</dependency>
		<!-- Spring Security OAuth2 dependency -->
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-oauth2-jose</artifactId>
		</dependency>
		<!-- Spring Security OAuth2 Client dependency -->
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-oauth2-client</artifactId>
		</dependency>
		<!-- Spring Security OAuth2 Resource Server dependency -->
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-oauth2-resource-server</artifactId>
		</dependency>
		<dependency>
		    <groupId>org.apache.pdfbox</groupId>
		    <artifactId>pdfbox</artifactId>
		    <version>3.0.7</version>
		</dependency>		
		<dependency>
			<groupId>net.bytebuddy</groupId>
			<artifactId>byte-buddy</artifactId>
		</dependency>				
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.sonatype.central</groupId>
				<artifactId>central-publishing-maven-plugin</artifactId>
				<version>0.9.0</version>
				<extensions>true</extensions>
				<configuration>
					<publishingServerId>central</publishingServerId>
             		<autoPublish>true</autoPublish>					
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<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>
				<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.2.8</version>
				<executions>
					<execution>
						<id>sign-artifacts</id>
						<phase>verify</phase>
						<goals>
							<goal>sign</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<keyname>0x4AF52EF9</keyname> <!--This is for home-lab jenkins server.-->
            		<passphraseServerId>0x4AF52EF9</passphraseServerId>					
					<skip>${skipSigning}</skip>
				  	<gpgArguments>
				    	<arg>--pinentry-mode</arg>
				    	<arg>loopback</arg>
				  	</gpgArguments>					
				</configuration>
			</plugin>
		</plugins>
	</build>
	<repositories>
		<repository>
			<id>central</id>
			<name>Maven Central Repository</name>
			<url>https://repo1.maven.org/maven2</url>
		</repository>
	</repositories>
	<profiles>
		<profile>
			<id>dev</id>
			<properties>
				<activatedProperties>dev</activatedProperties>
				<skipSigning>true</skipSigning>
			</properties>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
		</profile>
		<profile>
			<id>prod</id>
			<properties>
				<activatedProperties>prod</activatedProperties>
			</properties>
		</profile>
		<profile>
			<id>stage</id>
			<properties>
				<activatedProperties>stage</activatedProperties>
			</properties>
		</profile>		
	    <profile>
	        <id>owasp-check</id>
	        <build>		
            	<plugins>				
			        <plugin>
			            <groupId>org.owasp</groupId>
			            <artifactId>dependency-check-maven</artifactId>
			            <version>12.1.9</version>
					    <configuration>
	        				<autoUpdate>false</autoUpdate>
    						<dataDirectory>/var/lib/jenkins/tools/owasp-dependency-check-data</dataDirectory>
					        <format>ALL</format> <!-- Generates XML, HTML, CSV, and JSON reports -->
					        <outputDirectory>${project.build.directory}/dependency-check-report</outputDirectory>
					        <suppressionFile>${project.basedir}/dependency-check-suppressions.xml</suppressionFile>
					    </configuration>	            
			            <executions>
			                <execution>
			                    <goals>
			                        <goal>check</goal>
			                    </goals>
                        		<phase>validate</phase> <!-- Change this to validate or compile -->			                    
			                </execution>
			            </executions>
			        </plugin>
            	</plugins>		        
	        </build>
	    </profile>	        					
	</profiles>
</project>
