<?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>io.quarkiverse</groupId>
    <artifactId>quarkiverse-parent</artifactId>
    <version>21</version>
  </parent>
  <groupId>io.quarkiverse.langchain4j</groupId>
  <artifactId>quarkus-langchain4j-parent</artifactId>
  <version>1.8.4</version>
  <packaging>pom</packaging>
  <name>Quarkus LangChain4j - Parent</name>
  <modules>
    <module>agentic</module>
    <module>core</module>
    <module>embedding-stores</module>
    <module>mcp</module>
    <module>memory-stores</module>
    <module>model-auth-providers</module>
    <module>model-providers</module>
    <module>mcp-auth-providers</module>
    <module>quarkus-integrations</module>
    <module>rag</module>
    <module>skills</module>
    <module>tools</module>
    <module>codestarts</module>
    <module>testing-internal</module>
    <module>testing</module>
    <module>integration-tests</module>
  </modules>
  <scm>
    <connection>scm:git:git@github.com:quarkiverse/quarkus-langchain4j.git</connection>
    <developerConnection>scm:git:git@github.com:quarkiverse/quarkus-langchain4j.git</developerConnection>
    <url>https://github.com/quarkiverse/quarkus-langchain4j</url>
    <tag>1.8.4</tag>
  </scm>
  <properties>
    <quarkus.version>3.27.2</quarkus.version>
    <quarkus.extension-processor.version>${quarkus.version}</quarkus.extension-processor.version>
    <langchain4j.version>1.12.2</langchain4j.version>
    <langchain4j-community.version>1.6.0-beta12</langchain4j-community.version>
    <quarkus-antora.version>3.25.0</quarkus-antora.version>
    <quarkus-poi.version>2.0.4</quarkus-poi.version> <!-- we need to use this version because langchain4j uses POI 5.2.3 instead of 5.2.5 and the substitution needed is different in the two versions -->
    <assertj.version>3.27.7</assertj.version>
    <sundrio.version>0.200.4</sundrio.version>
    <quarkus-wiremock.version>1.5.1</quarkus-wiremock.version>
    <wiremock.version>3.13.1</wiremock.version>
    <quarkus-neo4j.version>5.7.0</quarkus-neo4j.version>
    <jlama.version>0.8.4</jlama.version>
    <google-auth-library-oauth2-http.version>1.42.1</google-auth-library-oauth2-http.version>
    <gpu-llama3.version>0.4.0</gpu-llama3.version>
    <smallrye-certificate-generator.version>0.9.2</smallrye-certificate-generator.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-bom</artifactId>
        <version>${quarkus.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>dev.langchain4j</groupId>
        <artifactId>langchain4j-bom</artifactId>
        <version>${langchain4j.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-extension-processor</artifactId>
        <version>${quarkus.extension-processor.version}</version>
      </dependency>
        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <version>${assertj.version}</version>
        </dependency>
    </dependencies>
  </dependencyManagement>
  <build>
    <extensions>
      <extension>
          <groupId>io.quarkus.bot</groupId>
          <artifactId>build-reporter-maven-extension</artifactId>
          <version>3.11.1</version>
      </extension>
    </extensions>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>io.quarkus</groupId>
          <artifactId>quarkus-maven-plugin</artifactId>
          <version>${quarkus.version}</version>
        </plugin>
        <plugin>
          <groupId>io.quarkus</groupId>
          <artifactId>quarkus-config-doc-maven-plugin</artifactId>
          <version>${quarkus.version}</version>
        </plugin>
        <plugin>
          <groupId>net.revelc.code</groupId>
          <artifactId>impsort-maven-plugin</artifactId>
          <version>${version.impsort.plugin}</version>
          <configuration>
            <compliance>17</compliance>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>io.sundr</groupId>
        <artifactId>sundr-maven-plugin</artifactId>
        <version>${sundrio.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>generate-bom</goal>
            </goals>
            <configuration>
              <boms>
                <bom>
                  <artifactId>quarkus-langchain4j-bom</artifactId>
                  <name>Quarkus LangChain4j : BOM</name>
                  <description>Centralized dependencyManagement for the Quarkus LangChain4j Project</description>
                  <properties>
                    <skipStagingRepositoryClose>true</skipStagingRepositoryClose>
                    <sonar.skip>true</sonar.skip>
                  </properties>
                  <modules>
                    <excludes>
                      <exclude>*:quarkus-langchain4j-integration-test*</exclude>
                      <exclude>*:quarkus-langchain4j-docs</exclude>
                      <exclude>*:quarkus-langchain4j-sample-*</exclude>
                    </excludes>
                  </modules>
                  <extraDependencies>
                    <dependency>
                      <groupId>dev.langchain4j</groupId>
                      <artifactId>langchain4j-milvus</artifactId>
                      <version>${langchain4j.version}</version>
                      <exclusions>
                        <exclusion>
                          <groupId>com.google.android</groupId>
                          <artifactId>annotations</artifactId>
                        </exclusion>
                        <exclusion>
                          <groupId>org.apache.logging.log4j</groupId>
                          <artifactId>log4j-slf4j-impl</artifactId>
                        </exclusion>
                        <exclusion>
                          <groupId>org.checkerframework</groupId>
                          <artifactId>checker-qual</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>org.codehaus.mojo</groupId>
                            <artifactId>animal-sniffer-annotations</artifactId>
                        </exclusion>
                      </exclusions>
                    </dependency>

                    <dependency>
                      <groupId>dev.langchain4j</groupId>
                      <artifactId>langchain4j-bom</artifactId>
                      <version>${langchain4j.version}</version>
                      <type>pom</type>
                      <scope>import</scope>
                    </dependency>

                    <!-- Codestart artifacts. These should be moved to their own modules for generate-bom to include them automatically. -->
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-core</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-openai-common</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-openai</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-chroma</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-infinispan</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-milvus</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-neo4j</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-pinecone</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-qdrant</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-redis</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-weaviate</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-memory-store-redis</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-memory-store-mongodb</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-anthropic</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-bedrock</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-cohere</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-gemini-common</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-ai-gemini</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-vertex-ai</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-vertex-ai-gemini</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-hugging-face</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-mistral-ai</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-ollama</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-azure-openai</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-openshift-ai</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-watsonx</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-jlama</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-easy-rag</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                    <dependency>
                        <groupId>io.quarkiverse.langchain4j</groupId>
                        <artifactId>quarkus-langchain4j-chatbot</artifactId>
                        <version>${project.version}</version>
                        <classifier>codestarts</classifier>
                    </dependency>
                  </extraDependencies>
                </bom>
              </boms>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>docs</id>
      <activation>
        <property>
          <name>performRelease</name>
          <value>!true</value>
        </property>
      </activation>
      <modules>
        <module>docs</module>
      </modules>
    </profile>
    <profile>
        <id>samples</id>
        <activation>
            <property>
                <name>samples</name>
            </property>
        </activation>
        <modules>
            <module>samples</module>
        </modules>
    </profile>
    <profile>
        <id>jdk25</id>
        <activation>
            <jdk>[25,)</jdk>
        </activation>
        <properties>
            <gpu-llama3.version>0.4.0-jdk25</gpu-llama3.version>
        </properties>
    </profile>
  </profiles>

  <!-- 
	  This is to allow building against langchain4j snapshots because they depend on snapshots
	  of langchain4j-embeddings and those are deployed in the Central Portal.
	  TODO: this can be removed after langchain4j-embeddings are moved into the main langchain4j repo 
  -->
  <repositories>
    <repository>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <id>central-portal-snapshots</id>
        <name>Central Portal Snapshots</name>
        <url>https://central.sonatype.com/repository/maven-snapshots/</url>
    </repository>
  </repositories>

</project>
