﻿<?xml version="1.0" encoding="UTF-8"?>
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
	license agreements. See the NOTICE file distributed with this work for additional
	information regarding copyright ownership. The ASF licenses this file to
	you 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 http://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>ai.platon.pulsar</groupId>
    <artifactId>pulsar-bom</artifactId>
    <name>Pulsar BOM</name>
    <version>4.9.3</version>

    <packaging>pom</packaging>

    <description>Bill of Materials POM for getting full, complete set of compatible versions of Browser4 modules
    </description>
    <url>https://platon.ai</url>

    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
        </license>
    </licenses>
    <inceptionYear>2024</inceptionYear>

    <organization>
        <name>platon.ai</name>
        <url>https://platon.ai</url>
    </organization>

    <developers>
        <developer>
            <name>Vincent Zhang</name>
            <email>ivincent.zhang@gmail.com</email>
            <organization>platon.ai</organization>
            <timezone>+8</timezone>
        </developer>
    </developers>

    <scm>
        <connection>scm:git:https://github.com/platonai/Browser4-base.git</connection>
        <developerConnection>scm:git:https://github.com/platonai/Browser4-base.git</developerConnection>
        <url>https://github.com/platonai/Browser4</url>
        <tag>HEAD</tag>
    </scm>

    <distributionManagement>
        <repository>
            <id>central</id>
            <url>https://central.sonatype.com/api/v1/publisher</url>
        </repository>
    </distributionManagement>

    <repositories>
        <repository>
            <id>Central</id>
            <url>https://repo1.maven.org/maven2/</url>
        </repository>
    </repositories>

    <!-- Required by dokka-maven-plugin -->
    <pluginRepositories>
        <pluginRepository>
            <id>jcenter</id>
            <name>JCenter</name>
            <url>https://jcenter.bintray.com/</url>
        </pluginRepository>
    </pluginRepositories>

    <profiles>
        <profile>
            <id>deploy</id>

            <build>
                <defaultGoal>deploy</defaultGoal>

                <plugins>

                    <!-- GPG signing -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>${maven-gpg-plugin.version}</version>
                        <configuration>
                            <gpgArguments>
                                <arg>--pinentry-mode</arg>
                                <arg>loopback</arg>
                            </gpgArguments>
                        </configuration>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>

                    <!-- Calculate checksums -->
                    <plugin>
                        <groupId>net.nicoulaj.maven.plugins</groupId>
                        <artifactId>checksum-maven-plugin</artifactId>
                        <version>${checksum-maven-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>source-release-checksum</id>
                                <goals>
                                    <goal>files</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <algorithms>
                                <algorithm>SHA-512</algorithm>
                                <algorithm>SHA-256</algorithm>
                            </algorithms>
                            <csvSummary>false</csvSummary>
                            <fileSets>
                                <fileSet>
                                    <directory>${project.build.directory}</directory>
                                    <includes>
                                        <include>${project.artifactId}-${project.version}-sources.jar</include>
                                        <include>${project.artifactId}-${project.version}-javadoc.jar</include>
                                        <include>${project.artifactId}-${project.version}.jar</include>
                                    </includes>
                                </fileSet>
                            </fileSets>
                            <failIfNoFiles>false</failIfNoFiles>
                        </configuration>
                    </plugin>

                    <plugin>
                        <groupId>org.sonatype.central</groupId>
                        <artifactId>central-publishing-maven-plugin</artifactId>
                        <version>${central-publishing-maven-plugin.version}</version>
                        <extensions>true</extensions>
                        <configuration>
                            <publishingServerId>central</publishingServerId>
                        </configuration>
                    </plugin>
                </plugins>
            </build>

        </profile>
    </profiles>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>ai.platon.pulsar</groupId>
                <artifactId>pulsar-common</artifactId>
                <version>${browser4.base.version}</version>
            </dependency>

            <dependency>
                <groupId>ai.platon.pulsar</groupId>
                <artifactId>pulsar-persist</artifactId>
                <version>${browser4.base.version}</version>
            </dependency>
            <dependency>
                <groupId>ai.platon.pulsar</groupId>
                <artifactId>pulsar-skeleton</artifactId>
                <version>${browser4.base.version}</version>
            </dependency>
            <dependency>
                <groupId>ai.platon.pulsar</groupId>
                <artifactId>pulsar-resources</artifactId>
                <version>${browser4.base.version}</version>
            </dependency>
            <dependency>
                <groupId>ai.platon.pulsar</groupId>
                <artifactId>pulsar-resources</artifactId>
                <type>test-jar</type>
                <classifier>tests</classifier>
                <scope>test</scope>
                <version>${browser4.base.version}</version>
            </dependency>

            <dependency>
                <groupId>ai.platon.pulsar</groupId>
                <artifactId>pulsar-plugins</artifactId>
                <type>pom</type>
                <version>${browser4.base.version}</version>
            </dependency>

            <dependency>
                <groupId>ai.platon.pulsar</groupId>
                <artifactId>pulsar-protocol</artifactId>
                <version>${browser4.base.version}</version>
            </dependency>
            <dependency>
                <groupId>ai.platon.pulsar</groupId>
                <artifactId>pulsar-parse</artifactId>
                <version>${browser4.base.version}</version>
            </dependency>

            <dependency>
                <groupId>ai.platon.pulsar</groupId>
                <artifactId>pulsar-browser</artifactId>
                <version>${browser4.base.version}</version>
            </dependency>

            <dependency>
                <groupId>ai.platon.pulsar</groupId>
                <artifactId>pulsar-llm</artifactId>
                <version>${browser4.base.version}</version>
            </dependency>

            <dependency>
                <groupId>ai.platon.pulsar</groupId>
                <artifactId>pulsar-dom</artifactId>
                <version>${browser4.base.version}</version>
            </dependency>

            <dependency>
                <groupId>ai.platon.pulsar</groupId>
                <artifactId>pulsar-ql-common</artifactId>
                <version>${browser4.base.version}</version>
            </dependency>
            <dependency>
                <groupId>ai.platon.pulsar</groupId>
                <artifactId>pulsar-ql-common</artifactId>
                <classifier>shaded</classifier>
                <version>${browser4.base.version}</version>
            </dependency>

            <dependency>
                <groupId>ai.platon.pulsar</groupId>
                <artifactId>pulsar-ql</artifactId>
                <version>${browser4.base.version}</version>
            </dependency>

            <!-- Kotlin -->

            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-stdlib</artifactId>
                <version>${kotlin.version}</version>
            </dependency>

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

    <properties>
        <!-- Plugin versions -->
        <maven-gpg-plugin.version>3.2.8</maven-gpg-plugin.version>
        <checksum-maven-plugin.version>1.11</checksum-maven-plugin.version>
        <central-publishing-maven-plugin.version>0.10.0</central-publishing-maven-plugin.version>

        <!--  Language  -->
        <javaVersion>17</javaVersion>
        <kotlinVersion>2.2.21</kotlinVersion>

        <!--  Kotlin  -->
        <kotlin.version>${kotlinVersion}</kotlin.version>
        <maven.compiler.release>${javaVersion}</maven.compiler.release>
        <kotlin.compiler.jvmTarget>${javaVersion}</kotlin.compiler.jvmTarget>

        <spring-boot.version>4.0.5</spring-boot.version>
        <browser4.base.version>${project.version}</browser4.base.version>

        <!-- keep consistent with io.modelcontextprotocol:kotlin-sdk-core-jvm:jar:0.8.1 -->
        <ktor.version>3.2.3</ktor.version>
        <springmockk.version>4.0.2</springmockk.version>

        <langchain4j.version>1.5.0</langchain4j.version>
    </properties>
</project>
