436 lines
16 KiB
XML
436 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>3.4.1</version>
|
||
<relativePath/> <!-- lookup parent from repository -->
|
||
</parent>
|
||
<groupId>com.ainovel</groupId>
|
||
<artifactId>ai-novel-server</artifactId>
|
||
<version>0.0.1-SNAPSHOT</version>
|
||
<name>AI Novel Assistant Server</name>
|
||
<packaging>jar</packaging>
|
||
<description>AI驱动的小说创作管理系统后端服务</description>
|
||
|
||
<properties>
|
||
<java.version>21</java.version>
|
||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||
<langchain4j.version>1.0.0-beta3</langchain4j.version>
|
||
</properties>
|
||
|
||
<dependencies>
|
||
<!-- Google Gen AI Java SDK (Gemini 官方 SDK) -->
|
||
<dependency>
|
||
<groupId>com.google.genai</groupId>
|
||
<artifactId>google-genai</artifactId>
|
||
<version>1.10.0</version>
|
||
</dependency>
|
||
<!-- Spring WebFlux -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-webflux</artifactId>
|
||
</dependency>
|
||
<!-- Pin Reactor Netty to a version with fix for HttpOperations.initShortId ClassCastException -->
|
||
<dependency>
|
||
<groupId>io.projectreactor.netty</groupId>
|
||
<artifactId>reactor-netty</artifactId>
|
||
<version>1.2.8</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>io.projectreactor.netty</groupId>
|
||
<artifactId>reactor-netty-http</artifactId>
|
||
<version>1.2.8</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>com.fasterxml.jackson.dataformat</groupId>
|
||
<artifactId>jackson-dataformat-xml</artifactId>
|
||
<version>2.17.1</version> </dependency>
|
||
<dependency>
|
||
<groupId>com.fasterxml.woodstox</groupId>
|
||
<artifactId>woodstox-core</artifactId>
|
||
<version>6.6.1</version>
|
||
</dependency>
|
||
|
||
<!-- OpenAPI / Swagger UI -->
|
||
<dependency>
|
||
<groupId>org.springdoc</groupId>
|
||
<artifactId>springdoc-openapi-starter-webflux-ui</artifactId>
|
||
<version>2.6.0</version> <!-- Use a recent compatible version -->
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.mantoux</groupId>
|
||
<artifactId>quill-delta</artifactId>
|
||
<version>1.6.3</version>
|
||
</dependency>
|
||
<!-- Spring Data MongoDB Reactive -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Spring Security -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-security</artifactId>
|
||
</dependency>
|
||
|
||
<!-- JWT Support -->
|
||
<dependency>
|
||
<groupId>io.jsonwebtoken</groupId>
|
||
<artifactId>jjwt-api</artifactId>
|
||
<version>0.11.5</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>io.jsonwebtoken</groupId>
|
||
<artifactId>jjwt-impl</artifactId>
|
||
<version>0.11.5</version>
|
||
<scope>runtime</scope>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>io.jsonwebtoken</groupId>
|
||
<artifactId>jjwt-jackson</artifactId>
|
||
<version>0.11.5</version>
|
||
<scope>runtime</scope>
|
||
</dependency>
|
||
<!-- Reactive Redis for idempotency/quotas -->
|
||
<!-- <dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-data-redis-reactive</artifactId>
|
||
</dependency> -->
|
||
<dependency>
|
||
<groupId>org.apache.commons</groupId>
|
||
<artifactId>commons-lang3</artifactId>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>io.projectreactor</groupId>
|
||
<artifactId>reactor-tools</artifactId>
|
||
<scope>runtime</scope>
|
||
</dependency>
|
||
|
||
<!-- Validation -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-validation</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Aliyun SDK for SMS -->
|
||
<dependency>
|
||
<groupId>com.aliyun</groupId>
|
||
<artifactId>dysmsapi20170525</artifactId>
|
||
<version>3.1.0</version>
|
||
</dependency>
|
||
|
||
<!-- Aliyun SDK Core -->
|
||
<dependency>
|
||
<groupId>com.aliyun</groupId>
|
||
<artifactId>aliyun-java-sdk-core</artifactId>
|
||
<version>4.6.4</version>
|
||
</dependency>
|
||
|
||
<!-- Spring Boot Mail for Email -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-mail</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Caffeine Cache for verification code storage -->
|
||
<dependency>
|
||
<groupId>com.github.ben-manes.caffeine</groupId>
|
||
<artifactId>caffeine</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Captcha generation -->
|
||
<dependency>
|
||
<groupId>com.github.penggle</groupId>
|
||
<artifactId>kaptcha</artifactId>
|
||
<version>2.3.2</version>
|
||
</dependency>
|
||
|
||
<!-- Lombok -->
|
||
<dependency>
|
||
<groupId>org.projectlombok</groupId>
|
||
<artifactId>lombok</artifactId>
|
||
<optional>true</optional>
|
||
</dependency>
|
||
|
||
<!-- Actuator for monitoring -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-actuator</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Micrometer for metrics -->
|
||
<dependency>
|
||
<groupId>io.micrometer</groupId>
|
||
<artifactId>micrometer-registry-prometheus</artifactId>
|
||
</dependency>
|
||
|
||
|
||
|
||
|
||
<!-- Micrometer Context Propagation (for Reactor MDC) -->
|
||
<dependency>
|
||
<groupId>io.micrometer</groupId>
|
||
<artifactId>context-propagation</artifactId>
|
||
</dependency>
|
||
|
||
<!-- AspectJ support for @Timed annotation -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-aop</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Gatling for performance testing -->
|
||
<dependency>
|
||
<groupId>io.gatling</groupId>
|
||
<artifactId>gatling-app</artifactId>
|
||
<version>3.10.3</version>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>io.gatling.highcharts</groupId>
|
||
<artifactId>gatling-charts-highcharts</artifactId>
|
||
<version>3.10.3</version>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
|
||
<!-- Test dependencies -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-test</artifactId>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>io.projectreactor</groupId>
|
||
<artifactId>reactor-test</artifactId>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.springframework.security</groupId>
|
||
<artifactId>spring-security-test</artifactId>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
|
||
<!-- LangChain4j 依赖 -->
|
||
<dependency>
|
||
<groupId>dev.langchain4j</groupId>
|
||
<artifactId>langchain4j</artifactId>
|
||
<version>${langchain4j.version}</version>
|
||
</dependency>
|
||
|
||
<!-- LangChain4j OpenAI 集成 -->
|
||
<dependency>
|
||
<groupId>dev.langchain4j</groupId>
|
||
<artifactId>langchain4j-open-ai</artifactId>
|
||
<version>${langchain4j.version}</version>
|
||
</dependency>
|
||
|
||
<!-- LangChain4j Anthropic 集成 -->
|
||
<dependency>
|
||
<groupId>dev.langchain4j</groupId>
|
||
<artifactId>langchain4j-anthropic</artifactId>
|
||
<version>${langchain4j.version}</version>
|
||
</dependency>
|
||
|
||
<!-- LangChain4j Google AI Gemini 集成 -->
|
||
<dependency>
|
||
<groupId>dev.langchain4j</groupId>
|
||
<artifactId>langchain4j-google-ai-gemini</artifactId>
|
||
<version>${langchain4j.version}</version>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>dev.langchain4j</groupId>
|
||
<artifactId>langchain4j-embeddings</artifactId>
|
||
<version>${langchain4j.version}</version>
|
||
</dependency>
|
||
|
||
<!-- LangChain4j Reactor 集成 (用于Flux支持) -->
|
||
<dependency>
|
||
<groupId>dev.langchain4j</groupId>
|
||
<artifactId>langchain4j-reactor</artifactId>
|
||
<version>${langchain4j.version}</version>
|
||
</dependency>
|
||
|
||
<!-- LangChain4j Chroma 集成 -->
|
||
<dependency>
|
||
<groupId>dev.langchain4j</groupId>
|
||
<artifactId>langchain4j-chroma</artifactId>
|
||
<version>${langchain4j.version}</version>
|
||
</dependency>
|
||
|
||
<!-- LangChain4j 本地嵌入模型 -->
|
||
<dependency>
|
||
<groupId>dev.langchain4j</groupId>
|
||
<artifactId>langchain4j-embeddings</artifactId>
|
||
<version>${langchain4j.version}</version>
|
||
</dependency>
|
||
|
||
<!-- AllMiniLmL6V2 嵌入模型 -->
|
||
<dependency>
|
||
<groupId>dev.langchain4j</groupId>
|
||
<artifactId>langchain4j-embeddings-all-minilm-l6-v2</artifactId>
|
||
<version>${langchain4j.version}</version>
|
||
</dependency>
|
||
|
||
<!-- AllMiniLmL6V2 量化嵌入模型 -->
|
||
<dependency>
|
||
<groupId>dev.langchain4j</groupId>
|
||
<artifactId>langchain4j-embeddings-all-minilm-l6-v2-q</artifactId>
|
||
<version>${langchain4j.version}</version>
|
||
</dependency>
|
||
|
||
<!-- Java Diff Utils -->
|
||
<dependency>
|
||
<groupId>io.github.java-diff-utils</groupId>
|
||
<artifactId>java-diff-utils</artifactId>
|
||
<version>4.12</version>
|
||
</dependency>
|
||
|
||
<!-- ByteBuddy for runtime code generation (tool bridge) -->
|
||
<dependency>
|
||
<groupId>net.bytebuddy</groupId>
|
||
<artifactId>byte-buddy</artifactId>
|
||
<version>1.15.0</version>
|
||
</dependency>
|
||
|
||
<!-- Jasypt -->
|
||
<dependency>
|
||
<groupId>com.github.ulisesbocchio</groupId>
|
||
<artifactId>jasypt-spring-boot-starter</artifactId>
|
||
<version>3.0.5</version>
|
||
</dependency>
|
||
|
||
<!-- 阿里云OSS SDK -->
|
||
<dependency>
|
||
<groupId>com.aliyun.oss</groupId>
|
||
<artifactId>aliyun-sdk-oss</artifactId>
|
||
<version>3.17.4</version>
|
||
</dependency>
|
||
|
||
<!-- 阿里云所需依赖 -->
|
||
<dependency>
|
||
<groupId>javax.xml.bind</groupId>
|
||
<artifactId>jaxb-api</artifactId>
|
||
<version>2.3.1</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>javax.activation</groupId>
|
||
<artifactId>activation</artifactId>
|
||
<version>1.1.1</version>
|
||
</dependency>
|
||
|
||
<!-- Spring Cache -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-cache</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Caffeine 缓存 -->
|
||
<dependency>
|
||
<groupId>com.github.ben-manes.caffeine</groupId>
|
||
<artifactId>caffeine</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Spring Caffeine Cache -->
|
||
<dependency>
|
||
<groupId>org.springframework</groupId>
|
||
<artifactId>spring-context-support</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Spring AMQP & RabbitMQ -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-amqp</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Java 延迟队列支持 (用于任务重试) -->
|
||
<dependency>
|
||
<groupId>net.jodah</groupId>
|
||
<artifactId>expiringmap</artifactId>
|
||
<version>0.5.11</version>
|
||
</dependency>
|
||
|
||
<!-- Google Guava库 (用于限流服务) -->
|
||
<dependency>
|
||
<groupId>com.google.guava</groupId>
|
||
<artifactId>guava</artifactId>
|
||
<version>33.0.0-jre</version>
|
||
</dependency>
|
||
|
||
<!-- Resilience4j (用于限流服务) -->
|
||
<dependency>
|
||
<groupId>io.github.resilience4j</groupId>
|
||
<artifactId>resilience4j-ratelimiter</artifactId>
|
||
<version>2.2.0</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>io.github.resilience4j</groupId>
|
||
<artifactId>resilience4j-core</artifactId>
|
||
<version>2.2.0</version>
|
||
</dependency>
|
||
|
||
<!-- SkyWalking Toolkit for manual tracing (optional) -->
|
||
<dependency>
|
||
<groupId>org.apache.skywalking</groupId>
|
||
<artifactId>apm-toolkit-trace</artifactId>
|
||
<version>9.5.0</version>
|
||
<scope>provided</scope>
|
||
</dependency>
|
||
|
||
</dependencies>
|
||
|
||
<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>
|
||
<plugin>
|
||
<groupId>org.apache.maven.plugins</groupId>
|
||
<artifactId>maven-compiler-plugin</artifactId>
|
||
<version>3.12.0</version>
|
||
<configuration>
|
||
<!-- 关键:保留参数名称用于MongoDB映射 -->
|
||
<parameters>true</parameters>
|
||
<compilerArgs>
|
||
<arg>-parameters</arg>
|
||
<!-- 保留调试信息 -->
|
||
<arg>-g</arg>
|
||
</compilerArgs>
|
||
<!-- 启用注解处理器 -->
|
||
<annotationProcessorPaths>
|
||
<path>
|
||
<groupId>org.projectlombok</groupId>
|
||
<artifactId>lombok</artifactId>
|
||
<version>1.18.30</version>
|
||
</path>
|
||
</annotationProcessorPaths>
|
||
</configuration>
|
||
</plugin>
|
||
<plugin>
|
||
<groupId>io.gatling</groupId>
|
||
<artifactId>gatling-maven-plugin</artifactId>
|
||
<version>4.6.0</version>
|
||
<configuration>
|
||
<simulationsFolder>src/test/java</simulationsFolder>
|
||
<resultsFolder>target/gatling/results</resultsFolder>
|
||
<runMultipleSimulations>true</runMultipleSimulations>
|
||
</configuration>
|
||
</plugin>
|
||
</plugins>
|
||
</build>
|
||
</project>
|