You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
280 lines
12 KiB
280 lines
12 KiB
<?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>3.4.4</version>
|
|
<relativePath/>
|
|
</parent>
|
|
<groupId>com.yupi</groupId>
|
|
<artifactId>yu-ai-agent</artifactId>
|
|
<version>0.0.1-SNAPSHOT</version>
|
|
<name>yu-ai-agent</name>
|
|
<description>yu-ai-agent</description>
|
|
<properties>
|
|
<java.version>17</java.version>
|
|
<spring-ai-alibaba.version>1.0.0.4</spring-ai-alibaba.version>
|
|
<!-- 设置为 true 可跳过前端 SDK 构建,加快后端编译:mvn compile -Dskip.frontend=true -->
|
|
<skip.frontend>false</skip.frontend>
|
|
</properties>
|
|
|
|
<!-- ==================== Maven 多环境 Profile ==================== -->
|
|
<!-- 通过 -P 参数选择目标环境:mvn clean package -P test / -P prod;不传则默认 dev -->
|
|
<!-- 每个 profile 通过 profiles.active 属性标识当前环境,打包时会替换 application.yml 中的 @profiles.active@ 占位符 -->
|
|
<profiles>
|
|
<profile>
|
|
<!-- 本地开发环境(默认激活) -->
|
|
<id>dev</id>
|
|
<properties>
|
|
<profiles.active>dev</profiles.active>
|
|
</properties>
|
|
<activation>
|
|
<activeByDefault>true</activeByDefault>
|
|
</activation>
|
|
</profile>
|
|
<profile>
|
|
<!-- 生产环境 -->
|
|
<id>prod</id>
|
|
<properties>
|
|
<profiles.active>prod</profiles.active>
|
|
</properties>
|
|
</profile>
|
|
<!-- 禁用 Spring Boot 父 POM 自带的 GraalVM 原生镜像 profile(IDEA 面板不再显示) -->
|
|
<profile>
|
|
<id>native</id>
|
|
<activation>
|
|
<property><name>skipNativeProfile</name></property>
|
|
</activation>
|
|
</profile>
|
|
<profile>
|
|
<id>nativeTest</id>
|
|
<activation>
|
|
<property><name>skipNativeTestProfile</name></property>
|
|
</activation>
|
|
</profile>
|
|
</profiles>
|
|
<dependencyManagement>
|
|
<dependencies>
|
|
<!-- Spring AI BOM:统一管理所有 Spring AI 依赖版本 -->
|
|
<dependency>
|
|
<groupId>org.springframework.ai</groupId>
|
|
<artifactId>spring-ai-bom</artifactId>
|
|
<version>1.0.1</version>
|
|
<type>pom</type>
|
|
<scope>import</scope>
|
|
</dependency>
|
|
</dependencies>
|
|
</dependencyManagement>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-web</artifactId>
|
|
</dependency>
|
|
|
|
<!-- 确保包含日志支持 -->
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-logging</artifactId>
|
|
</dependency>
|
|
|
|
<!-- Spring AI Alibaba DashScope(通义千问)- 新版 starter,替代老版 spring-ai-alibaba-starter -->
|
|
<dependency>
|
|
<groupId>com.alibaba.cloud.ai</groupId>
|
|
<artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
|
|
<version>${spring-ai-alibaba.version}</version>
|
|
</dependency>
|
|
|
|
<!-- Spring AI OpenAI(用于接入 OpenAI 兼容提供商:DeepSeek / Kimi / 豆包 / 智谱) -->
|
|
<dependency>
|
|
<groupId>org.springframework.ai</groupId>
|
|
<artifactId>spring-ai-openai</artifactId>
|
|
</dependency>
|
|
|
|
<!--Hutool 工具库-->
|
|
<dependency>
|
|
<groupId>cn.hutool</groupId>
|
|
<artifactId>hutool-all</artifactId>
|
|
<version>5.8.37</version>
|
|
</dependency>
|
|
<!--Knife4j 接口文档-->
|
|
<dependency>
|
|
<groupId>com.github.xiaoymin</groupId>
|
|
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
|
|
<version>4.4.0</version>
|
|
</dependency>
|
|
<!-- 支持结构化输出 -->
|
|
<dependency>
|
|
<groupId>com.github.victools</groupId>
|
|
<artifactId>jsonschema-generator</artifactId>
|
|
<version>4.38.0</version>
|
|
</dependency>
|
|
<!-- 支持文件会话记忆持久化的序列化 -->
|
|
<dependency>
|
|
<groupId>com.esotericsoftware</groupId>
|
|
<artifactId>kryo</artifactId>
|
|
<version>5.6.2</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework.ai</groupId>
|
|
<artifactId>spring-ai-markdown-document-reader</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.projectlombok</groupId>
|
|
<artifactId>lombok</artifactId>
|
|
<version>1.18.36</version>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-test</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<!-- 手动整合 PGVector 向量存储 -->
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-jdbc</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.postgresql</groupId>
|
|
<artifactId>postgresql</artifactId>
|
|
<scope>runtime</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework.ai</groupId>
|
|
<artifactId>spring-ai-pgvector-store</artifactId>
|
|
</dependency>
|
|
<!-- spring-ai-tika-document-reader -->
|
|
<dependency>
|
|
<groupId>org.springframework.ai</groupId>
|
|
<artifactId>spring-ai-tika-document-reader</artifactId>
|
|
</dependency>
|
|
<!-- Spring AI ToolCallingAutoConfiguration 依赖 spring-security-oauth2-client,补充该依赖避免 ClassNotFoundException -->
|
|
<dependency>
|
|
<groupId>org.springframework.security</groupId>
|
|
<artifactId>spring-security-oauth2-client</artifactId>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>com.baomidou</groupId>
|
|
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
|
|
<version>3.5.12</version>
|
|
</dependency>
|
|
</dependencies>
|
|
|
|
<build>
|
|
<!-- 打包产物按环境区分文件名,如 supportbot-dev.jar / supportbot-test.jar / supportbot-prod.jar -->
|
|
<finalName>supportbot-${profiles.active}</finalName>
|
|
<!-- 开启资源过滤:使 application.yml 中的 @profiles.active@ 占位符在打包时被替换为实际环境 -->
|
|
<!-- Spring Boot 父 POM 默认使用 @...@ 作为过滤占位符,不会误伤 yml 中的 ${...} -->
|
|
<resources>
|
|
<resource>
|
|
<directory>src/main/resources</directory>
|
|
<filtering>true</filtering>
|
|
</resource>
|
|
</resources>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-compiler-plugin</artifactId>
|
|
<configuration>
|
|
<annotationProcessorPaths>
|
|
<path>
|
|
<groupId>org.projectlombok</groupId>
|
|
<artifactId>lombok</artifactId>
|
|
<version>1.18.36</version>
|
|
</path>
|
|
</annotationProcessorPaths>
|
|
</configuration>
|
|
</plugin>
|
|
|
|
<!-- ==================== 前端 SDK 构建(client/ → static/sdk/) ==================== -->
|
|
<!-- 使用 frontend-maven-plugin 自动安装 Node.js 并编译前端 SDK -->
|
|
<!-- 跳过前端构建:mvn compile -Dskip.frontend=true -->
|
|
<plugin>
|
|
<groupId>com.github.eirslett</groupId>
|
|
<artifactId>frontend-maven-plugin</artifactId>
|
|
<version>1.15.1</version>
|
|
<configuration>
|
|
<workingDirectory>client</workingDirectory>
|
|
<skip>${skip.frontend}</skip>
|
|
</configuration>
|
|
<executions>
|
|
<!-- 第一步:安装 Node.js(仅首次,后续复用 node_modules 缓存) -->
|
|
<execution>
|
|
<id>install-node-and-npm</id>
|
|
<goals>
|
|
<goal>install-node-and-npm</goal>
|
|
</goals>
|
|
<configuration>
|
|
<nodeVersion>v20.18.0</nodeVersion>
|
|
</configuration>
|
|
</execution>
|
|
<!-- 第二步:npm install 安装依赖 -->
|
|
<execution>
|
|
<id>npm-install</id>
|
|
<goals>
|
|
<goal>npm</goal>
|
|
</goals>
|
|
<configuration>
|
|
<arguments>install</arguments>
|
|
</configuration>
|
|
</execution>
|
|
<!-- 第三步:npm run build 编译 SDK -->
|
|
<execution>
|
|
<id>npm-build</id>
|
|
<goals>
|
|
<goal>npm</goal>
|
|
</goals>
|
|
<configuration>
|
|
<arguments>run build</arguments>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
|
|
<!-- 复制 SDK 构建产物到 Spring Boot 静态资源目录 -->
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-resources-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>copy-sdk-to-static</id>
|
|
<phase>process-resources</phase>
|
|
<goals>
|
|
<goal>copy-resources</goal>
|
|
</goals>
|
|
<configuration>
|
|
<outputDirectory>${project.basedir}/src/main/resources/static/sdk</outputDirectory>
|
|
<resources>
|
|
<resource>
|
|
<directory>${project.basedir}/client/dist</directory>
|
|
<includes>
|
|
<include>chatbot-sdk.js</include>
|
|
<include>chatbot-sdk.min.js</include>
|
|
<include>chatbot-sdk.js.map</include>
|
|
<include>chatbot-sdk.min.js.map</include>
|
|
</includes>
|
|
</resource>
|
|
</resources>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
|
|
<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>
|
|
</plugins>
|
|
</build>
|
|
</project>
|