Files
spring-ai/pom.xml
Thomas Vitale 263fe2fba7 Modular RAG - Query Analysis
Query Analysis
* Introduce Query Analysis Module
* Define QueryTransformer API and TranslationQueryTransformer implementation
* Define QueryExpander API and MultiQueryExpander implementation
* Support QueryTransformer in RetrievalAugmentationAdvisor (support for QueryExpander will be in the next PR together with the needed DocumentFuser API).

Improvements
* Refine Retrieval and Augmentation Modules for increased robustness
* Expand test coverage for both modules
* Define clone() method for ChatClient.Builder

Tests
* Introduce “spring-ai-integration-tests” for full-fledged integration tests
* Add integration tests for RAG modules
* Add integration tests for RAG advisor

Query Analysis
* Introduce Query Analysis Module
* Define QueryTransformer API and TranslationQueryTransformer implementation
* Define QueryExpander API and MultiQueryExpander implementation
* Support QueryTransformer in RetrievalAugmentationAdvisor (support for QueryExpander will be in the next PR together with the needed DocumentFuser API).

Improvements
* Refine Retrieval and Augmentation Modules for increased robustness
* Expand test coverage for both modules
* Define clone() method for ChatClient.Builder

Tests
* Introduce “spring-ai-integration-tests” for full-fledged integration tests
* Add integration tests for RAG modules
* Add integration tests for RAG advisor

Relates to #gh-1603

Signed-off-by: Thomas Vitale <ThomasVitale@users.noreply.github.com>
2024-11-13 15:58:36 -05:00

798 lines
29 KiB
XML

<!--
~ Copyright 2023-2024 the original author or authors.
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ https://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<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>org.springframework.ai</groupId>
<artifactId>spring-ai</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<url>https://github.com/spring-projects/spring-ai</url>
<name>Spring AI</name>
<description>Building AI applications with Spring Boot</description>
<modules>
<module>spring-ai-docs</module>
<module>spring-ai-bom</module>
<module>spring-ai-core</module>
<module>spring-ai-test</module>
<module>spring-ai-spring-boot-autoconfigure</module>
<module>spring-ai-retry</module>
<module>spring-ai-spring-boot-docker-compose</module>
<module>spring-ai-spring-boot-testcontainers</module>
<module>spring-ai-spring-cloud-bindings</module>
<module>document-readers/markdown-reader</module>
<module>document-readers/pdf-reader</module>
<module>document-readers/tika-reader</module>
<module>vector-stores/spring-ai-azure-cosmos-db-store</module>
<module>vector-stores/spring-ai-azure-store</module>
<module>vector-stores/spring-ai-cassandra-store</module>
<module>vector-stores/spring-ai-chroma-store</module>
<module>vector-stores/spring-ai-coherence-store</module>
<module>vector-stores/spring-ai-elasticsearch-store</module>
<module>vector-stores/spring-ai-gemfire-store</module>
<module>vector-stores/spring-ai-hanadb-store</module>
<module>vector-stores/spring-ai-milvus-store</module>
<module>vector-stores/spring-ai-mongodb-atlas-store</module>
<module>vector-stores/spring-ai-neo4j-store</module>
<module>vector-stores/spring-ai-opensearch-store</module>
<module>vector-stores/spring-ai-oracle-store</module>
<module>vector-stores/spring-ai-pgvector-store</module>
<module>vector-stores/spring-ai-pinecone-store</module>
<module>vector-stores/spring-ai-qdrant-store</module>
<module>vector-stores/spring-ai-redis-store</module>
<module>vector-stores/spring-ai-typesense-store</module>
<module>vector-stores/spring-ai-weaviate-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-aws-opensearch-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-azure-cosmos-db-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-azure-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-cassandra-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-chroma-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-coherence-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-elasticsearch-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-gemfire-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-hanadb-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-milvus-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-mongodb-atlas-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-neo4j-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-opensearch-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-oracle-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-pgvector-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-pinecone-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-qdrant-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-redis-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-typesense-store</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-weaviate-store</module>
<module>models/spring-ai-anthropic</module>
<module>models/spring-ai-azure-openai</module>
<module>models/spring-ai-bedrock</module>
<module>models/spring-ai-bedrock-converse</module>
<module>models/spring-ai-huggingface</module>
<module>models/spring-ai-minimax</module>
<module>models/spring-ai-mistral-ai</module>
<module>models/spring-ai-oci-genai</module>
<module>models/spring-ai-ollama</module>
<module>models/spring-ai-openai</module>
<module>models/spring-ai-postgresml</module>
<module>models/spring-ai-qianfan</module>
<module>models/spring-ai-stability-ai</module>
<module>models/spring-ai-transformers</module>
<module>models/spring-ai-vertex-ai-embedding</module>
<module>models/spring-ai-vertex-ai-gemini</module>
<module>models/spring-ai-watsonx-ai</module>
<module>models/spring-ai-zhipuai</module>
<module>models/spring-ai-moonshot</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-anthropic</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-azure-openai</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-bedrock-ai</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-bedrock-converse</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-huggingface</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-minimax</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-mistral-ai</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-oci-genai</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-ollama</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-openai</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-postgresml-embedding</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-qianfan</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-stability-ai</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-transformers</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-embedding</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-gemini</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-watsonx-ai</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-zhipuai</module>
<module>spring-ai-spring-boot-starters/spring-ai-starter-moonshot</module>
<module>spring-ai-integration-tests</module>
</modules>
<organization>
<name>VMware Inc.</name>
<url>https://spring.io</url>
</organization>
<scm>
<url>https://github.com/spring-projects/spring-ai</url>
<connection>git://github.com/spring-projects/spring-ai.git</connection>
<developerConnection>git@github.com:spring-projects/spring-ai.git</developerConnection>
</scm>
<issueManagement>
<system>Github Issues</system>
<url>https://github.com/spring-projects/spring-ai/issues</url>
</issueManagement>
<ciManagement>
<system>Github Actions</system>
<url>https://github.com/spring-projects/spring-ai/actions</url>
</ciManagement>
<distributionManagement>
<snapshotRepository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/libs-snapshot-local</url>
<releases>
<enabled>false</enabled>
</releases>
</snapshotRepository>
</distributionManagement>
<licenses>
<license>
<name>Apache 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>17</java.version>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<!-- production dependencies -->
<spring-cloud-function-context.version>4.1.3</spring-cloud-function-context.version>
<spring-boot.version>3.3.4</spring-boot.version>
<ST4.version>4.3.4</ST4.version>
<azure-open-ai-client.version>1.0.0-beta.10</azure-open-ai-client.version>
<jtokkit.version>1.1.0</jtokkit.version>
<victools.version>4.31.1</victools.version>
<kotlin.version>1.9.25</kotlin.version>
<jackson-module-jsonSchema.version>2.17.2</jackson-module-jsonSchema.version>
<!-- NOTE: keep them align -->
<bedrockruntime.version>2.26.7</bedrockruntime.version>
<awssdk.version>2.26.7</awssdk.version>
<jackson.version>2.16.1</jackson.version>
<djl.version>0.30.0</djl.version>
<onnxruntime.version>1.19.2</onnxruntime.version>
<oci-sdk-version>3.51.0</oci-sdk-version>
<com.google.cloud.version>26.48.0</com.google.cloud.version>
<qdrant.version>1.9.1</qdrant.version>
<spring-retry.version>2.0.9</spring-retry.version>
<ibm.sdk.version>9.20.0</ibm.sdk.version>
<jsonschema.version>4.35.0</jsonschema.version>
<swagger-annotations.version>2.2.20</swagger-annotations.version>
<spring-cloud-bindings.version>2.0.3</spring-cloud-bindings.version>
<!-- Protobuf -->
<protobuf-java.version>3.25.2</protobuf-java.version>
<!-- readers/writer/stores dependencies-->
<cassandra.java-driver.version>4.18.1</cassandra.java-driver.version>
<pdfbox.version>3.0.3</pdfbox.version>
<pgvector.version>0.1.6</pgvector.version>
<sap.hanadb.version>2.20.11</sap.hanadb.version>
<coherence.version>24.09</coherence.version>
<oracle.version>23.4.0.24.05</oracle.version>
<postgresql.version>42.7.2</postgresql.version>
<elasticsearch-java.version>8.13.3</elasticsearch-java.version>
<milvus.version>2.3.5</milvus.version>
<oracle.free.version>1.19.8</oracle.free.version>
<gemfire.testcontainers.version>2.3.0</gemfire.testcontainers.version>
<pinecone.version>0.8.0</pinecone.version>
<fastjson.version>2.0.46</fastjson.version>
<azure-search.version>11.6.1</azure-search.version>
<azure-cosmos.version>5.17.1</azure-cosmos.version>
<weaviate-client.version>4.5.1</weaviate-client.version>
<qdrant.version>1.9.1</qdrant.version>
<typesense.version>0.5.0</typesense.version>
<opensearch-client.version>2.10.1</opensearch-client.version>
<commonmark.version>0.22.0</commonmark.version>
<!-- testing dependencies -->
<httpclient5.version>5.3.1</httpclient5.version>
<!-- testing dependencies -->
<testcontainers.version>1.20.1</testcontainers.version>
<testcontainers.opensearch.version>2.0.1</testcontainers.opensearch.version>
<!-- documentation dependencies -->
<io.spring.maven.antora-version>0.0.4</io.spring.maven.antora-version>
<org.maven.antora-version>1.0.0-alpha.4</org.maven.antora-version>
<asciidoctorj-pdf.version>1.6.2</asciidoctorj-pdf.version> <!-- FIXME build failure with version 2.3.9 -->
<asciidoctorj-epub.version>1.5.1</asciidoctorj-epub.version>
<spring-asciidoctor-backends.version>0.0.6</spring-asciidoctor-backends.version>
<!-- plugin versions -->
<maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version>
<maven-surefire-plugin.version>3.1.2</maven-surefire-plugin.version>
<maven-failsafe-plugin.version>3.1.2</maven-failsafe-plugin.version>
<maven-javadoc-plugin.version>3.5.0</maven-javadoc-plugin.version>
<maven-source-plugin.version>3.3.0</maven-source-plugin.version>
<jacoco-maven-plugin.version>0.8.10</jacoco-maven-plugin.version>
<flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version>
<maven-deploy-plugin.version>3.1.1</maven-deploy-plugin.version>
<asciidoctor-maven-plugin.version>2.2.3</asciidoctor-maven-plugin.version>
<maven-assembly-plugin.version>3.7.0</maven-assembly-plugin.version>
<maven-dependency-plugin.version>3.5.0</maven-dependency-plugin.version>
<!-- <maven-site-plugin.version>3.12.1</maven-site-plugin.version> -->
<maven-site-plugin.version>4.0.0-M13</maven-site-plugin.version>
<maven-project-info-reports-plugin.version>3.4.5</maven-project-info-reports-plugin.version>
<maven-jar-plugin.version>3.3.0</maven-jar-plugin.version>
<spring-javaformat-maven-plugin.version>0.0.43</spring-javaformat-maven-plugin.version>
<maven-checkstyle-plugin.version>3.5.0</maven-checkstyle-plugin.version>
<maven-checkstyle-plugin.failsOnError>true</maven-checkstyle-plugin.failsOnError>
<maven-checkstyle-plugin.failOnViolation>true</maven-checkstyle-plugin.failOnViolation>
<puppycrawl-tools-checkstyle.version>9.3</puppycrawl-tools-checkstyle.version>
<disable.checks>true</disable.checks>
<!-- Individual vector store IT skip flags with smoke tests enabled by default -->
<skip.vectorstore.azure-cosmos-db>true</skip.vectorstore.azure-cosmos-db>
<skip.vectorstore.azure>true</skip.vectorstore.azure>
<skip.vectorstore.cassandra>true</skip.vectorstore.cassandra>
<skip.vectorstore.chroma>false</skip.vectorstore.chroma> <!-- smoke test -->
<skip.vectorstore.coherence>true</skip.vectorstore.coherence>
<skip.vectorstore.elasticsearch>true</skip.vectorstore.elasticsearch>
<skip.vectorstore.gemfire>true</skip.vectorstore.gemfire>
<skip.vectorstore.hanadb>true</skip.vectorstore.hanadb>
<skip.vectorstore.milvus>true</skip.vectorstore.milvus>
<skip.vectorstore.mongodb-atlas>true</skip.vectorstore.mongodb-atlas>
<skip.vectorstore.neo4j>true</skip.vectorstore.neo4j>
<skip.vectorstore.opensearch>true</skip.vectorstore.opensearch>
<skip.vectorstore.oracle>true</skip.vectorstore.oracle>
<skip.vectorstore.pgvector>false</skip.vectorstore.pgvector> <!-- smoke test -->
<skip.vectorstore.pinecone>true</skip.vectorstore.pinecone>
<skip.vectorstore.qdrant>true</skip.vectorstore.qdrant>
<skip.vectorstore.redis>true</skip.vectorstore.redis>
<skip.vectorstore.typesense>true</skip.vectorstore.typesense>
<skip.vectorstore.weaviate>true</skip.vectorstore.weaviate>
<!-- Container module ITs - skipped by default -->
<skip.docker-compose>true</skip.docker-compose>
<skip.testcontainers>true</skip.testcontainers>
<!-- Ollama Model IT tests - skipped by default -->
<skip.model.ollama>true</skip.model.ollama>
</properties>
<build>
<plugins>
<plugin>
<groupId>io.spring.javaformat</groupId>
<artifactId>spring-javaformat-maven-plugin</artifactId>
<version>${spring-javaformat-maven-plugin.version}</version>
<executions>
<execution>
<phase>validate</phase>
<inherited>true</inherited>
<goals>
<goal>validate</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${maven-checkstyle-plugin.version}</version>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>${puppycrawl-tools-checkstyle.version}</version>
</dependency>
<dependency>
<groupId>io.spring.javaformat</groupId>
<artifactId>spring-javaformat-checkstyle</artifactId>
<version>0.0.43</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>checkstyle-validation</id>
<phase>validate</phase>
<inherited>true</inherited>
<configuration>
<skip>${disable.checks}</skip>
<configLocation>src/checkstyle/checkstyle.xml</configLocation>
<headerLocation>src/checkstyle/checkstyle-header.txt</headerLocation>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
<propertyExpansion>
checkstyle.build.directory=${project.build.directory}
checkstyle.suppressions.file=${project.basedir}/src/checkstyle/checkstyle-suppressions.xml
checkstyle.additional.suppressions.file=${project.basedir}/src/checkstyle/checkstyle-suppressions.xml
checkstyle.header.file=${project.basedir}/src/checkstyle/checkstyle-header.txt
</propertyExpansion>
<consoleOutput>true</consoleOutput>
<failsOnError>${maven-checkstyle-plugin.failsOnError}
</failsOnError>
<failOnViolation>
${maven-checkstyle-plugin.failOnViolation}
</failOnViolation>
</configuration>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>${maven-site-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
<sourceDir>${project.basedir}/src/main/java</sourceDir>
</sourceDirs>
</configuration>
</execution>
<execution>
<id>test-compile</id>
<goals>
<goal>test-compile</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
<sourceDir>${project.basedir}/src/test/java</sourceDir>
</sourceDirs>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<release>${java.version}</release>
<compilerArgs>
<compilerArg>-parameters</compilerArg>
</compilerArgs>
</configuration>
<executions>
<!-- Replacing default-compile as it is treated specially by Maven -->
<execution>
<id>default-compile</id>
<phase>none</phase>
</execution>
<!-- Replacing default-testCompile as it is treated specially by Maven -->
<execution>
<id>default-testCompile</id>
<phase>none</phase>
</execution>
<execution>
<id>java-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>java-test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<argLine>${surefireArgLine}</argLine>
<useFile>false</useFile>
<trimStackTrace>false</trimStackTrace>
<!-- Show test timing information -->
<reportFormat>plain</reportFormat>
<!-- Output test execution times in the logs -->
<redirectTestOutputToFile>false</redirectTestOutputToFile>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven-jar-plugin.version}</version>
<configuration>
<archive>
<manifestEntries>
<Implementation-Title>${project.artifactId}</Implementation-Title>
<Implementation-Version>${project.version}</Implementation-Version>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>${flatten-maven-plugin.version}</version>
<executions>
<execution>
<id>flatten</id>
<phase>process-resources</phase>
<goals>
<goal>flatten</goal>
</goals>
<configuration>
<updatePomFile>true</updatePomFile>
<flattenMode>ossrh</flattenMode>
<pomElements>
<distributionManagement>remove</distributionManagement>
<dependencyManagement>remove</dependencyManagement>
<repositories>remove</repositories>
<scm>keep</scm>
<url>keep</url>
<organization>resolve</organization>
</pomElements>
</configuration>
</execution>
<execution>
<id>clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>${maven-deploy-plugin.version}</version>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>license</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.mycila</groupId>
<artifactId>license-maven-plugin</artifactId>
<version>4.1</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
<configuration>
<properties>
<owner>the original author or authors.</owner>
<email/>
<year>2024</year>
</properties>
<licenseSets>
<licenseSet>
<inlineHeader>
<!-- @formatter:off -->
Copyright 2023 - ${year} the original author or authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
<!-- @formatter:on -->
</inlineHeader>
<excludes>
<exclude>**/.antlr/**</exclude>
<exclude>**/aot.factories</exclude>
<exclude>**/.sdkmanrc</exclude>
<exclude>**/*.adoc</exclude>
<exclude>**/*.puml</exclude>
<exclude>**/pom.xml</exclude>
<exclude>**/*.properties</exclude>
<exclude>**/*.yaml</exclude>
<exclude>**/*.yml</exclude>
<exclude>**/*.map</exclude>
<exclude>**/*.html</exclude>
<exclude>**/*.xhtml</exclude>
<exclude>**/*.jsp</exclude>
<exclude>**/*.js</exclude>
<exclude>**/*.css</exclude>
<exclude>**/*.txt</exclude>
<exclude>**/*.xjb</exclude>
<exclude>**/*.ftl</exclude>
<exclude>**/*.xsd</exclude>
<exclude>**/*.xml</exclude>
<exclude>**/*.sh</exclude>
<exclude>**/generated/**</exclude>
<exclude>**/Dockerfile</exclude>
</excludes>
</licenseSet>
</licenseSets>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>javadoc</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-javadoc-plugin.version}</version>
<configuration>
<excludePackageNames>org.springframework.ai.sample.*,org.springframework.ai.testcontainers.service.connection.*</excludePackageNames>
<overview>${project.basedir}/spring-ai-docs/src/main/javadoc/overview.html</overview>
<detectJavaApiLink>false</detectJavaApiLink>
<failOnError>false</failOnError>
<doclint>none</doclint>
</configuration>
<executions>
<execution>
<id>generate-javadocs</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
<execution>
<id>generate-aggregate-javadocs</id>
<phase>package</phase>
<goals>
<goal>aggregate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>integration-tests</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${maven-failsafe-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- Profile to enable all vector store tests -->
<profile>
<id>full-vectorstore-tests</id>
<properties>
<skip.vectorstore.azure-cosmos-db>false</skip.vectorstore.azure-cosmos-db>
<skip.vectorstore.azure>false</skip.vectorstore.azure>
<skip.vectorstore.cassandra>false</skip.vectorstore.cassandra>
<skip.vectorstore.chroma>false</skip.vectorstore.chroma>
<skip.vectorstore.coherence>false</skip.vectorstore.coherence>
<skip.vectorstore.elasticsearch>false</skip.vectorstore.elasticsearch>
<skip.vectorstore.gemfire>false</skip.vectorstore.gemfire>
<skip.vectorstore.hanadb>false</skip.vectorstore.hanadb>
<skip.vectorstore.milvus>false</skip.vectorstore.milvus>
<skip.vectorstore.mongodb-atlas>false</skip.vectorstore.mongodb-atlas>
<skip.vectorstore.neo4j>false</skip.vectorstore.neo4j>
<skip.vectorstore.opensearch>false</skip.vectorstore.opensearch>
<skip.vectorstore.oracle>false</skip.vectorstore.oracle>
<skip.vectorstore.pgvector>false</skip.vectorstore.pgvector>
<skip.vectorstore.pinecone>false</skip.vectorstore.pinecone>
<skip.vectorstore.qdrant>false</skip.vectorstore.qdrant>
<skip.vectorstore.redis>false</skip.vectorstore.redis>
<skip.vectorstore.typesense>false</skip.vectorstore.typesense>
<skip.vectorstore.weaviate>false</skip.vectorstore.weaviate>
</properties>
</profile>
<profile>
<id>test-coverage</id>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco-maven-plugin.version}</version>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>artifactory-staging</id>
<distributionManagement>
<repository>
<id>spring-staging</id>
<url>https://repo.spring.io/libs-staging-local</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</distributionManagement>
</profile>
<profile>
<id>artifactory-milestone</id>
<distributionManagement>
<repository>
<id>spring-milestones</id>
<url>https://repo.spring.io/libs-milestone-local</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</distributionManagement>
</profile>
</profiles>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<repositories>
<repository>
<id>maven-central</id>
<url>https://repo.maven.apache.org/maven2/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<developers>
<developer>
<id>mpollack</id>
<name>Mark Pollack</name>
<email>mpollack at vmware.com</email>
<organization>VMware</organization>
<organizationUrl>http://www.spring.io</organizationUrl>
<roles>
<role>lead</role>
</roles>
</developer>
</developers>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>${maven-project-info-reports-plugin.version}</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</reporting>
</project>