Files
loyalty-agent-service/pom.xml

350 lines
16 KiB
XML

<?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.1.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>dev.sonpx.loyalty</groupId>
<artifactId>loyalty-agent-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>loyalty-agent-service</name>
<description>AI Agent Service to orchestrate Loyalty core system</description>
<properties>
<java.version>25</java.version>
<spring-ai.version>2.0.0</spring-ai.version>
</properties>
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring AI Ollama -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>
<!-- WebClient (needed for generated API client if library is webclient) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<!-- OAuth2 Client -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- Springdoc OpenAPI -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.7.0</version>
</dependency>
<!-- Dependencies for generated OpenAPI clients -->
<dependency>
<groupId>org.openapitools</groupId>
<artifactId>jackson-databind-nullable</artifactId>
<version>0.2.6</version>
</dependency>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.14</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.14</version>
</dependency>
<!-- Testing -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<!-- Add generated sources to compile path even when not running gen profile -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-sources/openapi/src/main/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>gen</id>
<build>
<plugins>
<!-- OpenAPI Generator Plugin -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>7.23.0</version>
<configuration>
<skipValidateSpec>true</skipValidateSpec>
<typeMappings>
<MultiValueMapStringString>org.springframework.util.MultiValueMap</MultiValueMapStringString>
</typeMappings>
<importMappings>
<MultiValueMapStringString>org.springframework.util.MultiValueMap</MultiValueMapStringString>
</importMappings>
<nameMappings>user_name=user_name_raw,setAttributeId=set_attribute_id_val</nameMappings>
</configuration>
<executions>
<execution>
<id>generate-attribute</id>
<goals><goal>generate</goal></goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/specs/attribute.json</inputSpec>
<generatorName>java</generatorName>
<library>native</library>
<apiPackage>dev.sonpx.loyalty.agent.client.api.attribute</apiPackage>
<modelPackage>dev.sonpx.loyalty.agent.client.model.attribute</modelPackage>
<generateApiTests>false</generateApiTests>
<generateModelTests>false</generateModelTests>
<configOptions>
<useJakartaEe>true</useJakartaEe>
<useSpringBoot3>true</useSpringBoot3>
</configOptions>
</configuration>
</execution>
<execution>
<id>generate-catalogue</id>
<goals><goal>generate</goal></goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/specs/catalogue.json</inputSpec>
<generatorName>java</generatorName>
<library>native</library>
<apiPackage>dev.sonpx.loyalty.agent.client.api.catalogue</apiPackage>
<modelPackage>dev.sonpx.loyalty.agent.client.model.catalogue</modelPackage>
<generateApiTests>false</generateApiTests>
<generateModelTests>false</generateModelTests>
<configOptions>
<useJakartaEe>true</useJakartaEe>
<useSpringBoot3>true</useSpringBoot3>
</configOptions>
</configuration>
</execution>
<execution>
<id>generate-customer</id>
<goals><goal>generate</goal></goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/specs/customer.json</inputSpec>
<generatorName>java</generatorName>
<library>native</library>
<apiPackage>dev.sonpx.loyalty.agent.client.api.customer</apiPackage>
<modelPackage>dev.sonpx.loyalty.agent.client.model.customer</modelPackage>
<generateApiTests>false</generateApiTests>
<generateModelTests>false</generateModelTests>
<configOptions>
<useJakartaEe>true</useJakartaEe>
<useSpringBoot3>true</useSpringBoot3>
</configOptions>
</configuration>
</execution>
<execution>
<id>generate-identity</id>
<goals><goal>generate</goal></goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/specs/identity.json</inputSpec>
<generatorName>java</generatorName>
<library>native</library>
<apiPackage>dev.sonpx.loyalty.agent.client.api.identity</apiPackage>
<modelPackage>dev.sonpx.loyalty.agent.client.model.identity</modelPackage>
<generateApiTests>false</generateApiTests>
<generateModelTests>false</generateModelTests>
<configOptions>
<useJakartaEe>true</useJakartaEe>
<useSpringBoot3>true</useSpringBoot3>
</configOptions>
</configuration>
</execution>
<execution>
<id>generate-marketing</id>
<goals><goal>generate</goal></goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/specs/marketing.json</inputSpec>
<generatorName>java</generatorName>
<library>native</library>
<apiPackage>dev.sonpx.loyalty.agent.client.api.marketing</apiPackage>
<modelPackage>dev.sonpx.loyalty.agent.client.model.marketing</modelPackage>
<generateApiTests>false</generateApiTests>
<generateModelTests>false</generateModelTests>
<configOptions>
<useJakartaEe>true</useJakartaEe>
<useSpringBoot3>true</useSpringBoot3>
</configOptions>
</configuration>
</execution>
<execution>
<id>generate-master</id>
<goals><goal>generate</goal></goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/specs/master.json</inputSpec>
<generatorName>java</generatorName>
<library>native</library>
<apiPackage>dev.sonpx.loyalty.agent.client.api.master</apiPackage>
<modelPackage>dev.sonpx.loyalty.agent.client.model.master</modelPackage>
<generateApiTests>false</generateApiTests>
<generateModelTests>false</generateModelTests>
<configOptions>
<useJakartaEe>true</useJakartaEe>
<useSpringBoot3>true</useSpringBoot3>
</configOptions>
</configuration>
</execution>
<execution>
<id>generate-reward</id>
<goals><goal>generate</goal></goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/specs/reward.json</inputSpec>
<generatorName>java</generatorName>
<library>native</library>
<apiPackage>dev.sonpx.loyalty.agent.client.api.reward</apiPackage>
<modelPackage>dev.sonpx.loyalty.agent.client.model.reward</modelPackage>
<generateApiTests>false</generateApiTests>
<generateModelTests>false</generateModelTests>
<configOptions>
<useJakartaEe>true</useJakartaEe>
<useSpringBoot3>true</useSpringBoot3>
</configOptions>
</configuration>
</execution>
<execution>
<id>generate-transaction</id>
<goals><goal>generate</goal></goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/specs/transaction.json</inputSpec>
<generatorName>java</generatorName>
<library>native</library>
<apiPackage>dev.sonpx.loyalty.agent.client.api.transaction</apiPackage>
<modelPackage>dev.sonpx.loyalty.agent.client.model.transaction</modelPackage>
<generateApiTests>false</generateApiTests>
<generateModelTests>false</generateModelTests>
<configOptions>
<useJakartaEe>true</useJakartaEe>
<useSpringBoot3>true</useSpringBoot3>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
<!-- Replacer plugin to fix missing import of MultiValueMapStringString in openapi generated code -->
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>1.5.3</version>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<includes>
<include>${project.basedir}/target/generated-sources/openapi/src/main/java/**/*Api.java</include>
</includes>
<replacements>
<replacement>
<token>(?&lt;!\.)MultiValueMapStringString</token>
<value>dev.sonpx.loyalty.agent.client.model.transaction.MultiValueMapStringString</value>
</replacement>
</replacements>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>