refactor(gradle): 重构项目构建配置
All checks were successful
CI/CD Pipeline / build-and-deploy (push) Successful in 2m3s

- 更新依赖版本:  - forgeBoot 版本从 1.1.0-SNAPSHOT 升级到 1.2.0-SNAPSHOT - spring-dependency-management 版本 1.1.7 未变
  - aliyun-bailian 版本 2.0.0 未变 - spring-cloud-starter-alibaba-nacos-discovery 版本 2023.0.1.0 未变
  - okHttp 版本 4.12.0 未变 - jib 版本 3.4.2 未变  - org-reactivestreams-reactiveStreams 版本 1.0.4 未变- 调整模块间依赖:
  - llmx-core-service: 依赖从 Core.SPI 改为 Core.COMMON
  - llmx-impl-bailian 和 llmx-impl-openai: 移除冗余依赖,统一配置  - 根项目:添加 USE_LLM_IMPL_PLATFORM_DEPENDENCE 标志

- 移除跨域配置类 CorsConfig 中的注释
- 修改 LlmxCoreServiceApplication 类为 open
- 删除 ChatController 中的 @CrossOrigin 注解
This commit is contained in:
gewuyou 2025-05-09 18:15:10 +08:00
parent 7400c4d24f
commit 690ede78f0
9 changed files with 91 additions and 101 deletions

View File

@ -3,7 +3,6 @@ plugins {
alias(libs.plugins.kotlin.jvm) alias(libs.plugins.kotlin.jvm)
alias(libs.plugins.kotlin.plugin.spring) alias(libs.plugins.kotlin.plugin.spring)
alias(libs.plugins.spring.boot) alias(libs.plugins.spring.boot)
alias(libs.plugins.spring.dependency.management)
alias(libs.plugins.jibLocalPlugin) alias(libs.plugins.jibLocalPlugin)
} }
@ -20,10 +19,11 @@ allprojects {
// 设置全局属性 // 设置全局属性
ext { ext {
set(ProjectFlags.USE_SPRING_BOOT_WEB, false) set(ProjectFlags.USE_SPRING_BOOT_WEB, false)
set(ProjectFlags.USE_LLM_CORE_SPI, false) set(ProjectFlags.USE_LLM_KT_IMPL_DEPENDENCE, false)
set(ProjectFlags.USE_SPRING_CLOUD_BOM, false) set(ProjectFlags.USE_SPRING_CLOUD_BOM, false)
set(ProjectFlags.IS_ROOT_MODULE, false) set(ProjectFlags.IS_ROOT_MODULE, false)
set(ProjectFlags.USE_SPRING_BOOT_BOM,false) set(ProjectFlags.USE_SPRING_BOOT_BOM, false)
set(ProjectFlags.USE_LLM_IMPL_PLATFORM_DEPENDENCE, false)
} }
repositories { repositories {
mavenLocal() mavenLocal()
@ -34,9 +34,6 @@ allprojects {
maven { maven {
url = uri("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev") url = uri("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev")
} }
// maven {
// url = uri("https://raw.githubusercontent.com/eurotech/kura_addons/mvn-repo/")
// }
maven { maven {
url = uri("https://maven.aliyun.com/repository/public/") url = uri("https://maven.aliyun.com/repository/public/")
} }
@ -68,24 +65,25 @@ allprojects {
subprojects { subprojects {
afterEvaluate { afterEvaluate {
// springbootWeb if (project.getPropertyByBoolean(ProjectFlags.USE_LLM_IMPL_PLATFORM_DEPENDENCE)) {
if (project.getPropertyByBoolean(ProjectFlags.USE_SPRING_BOOT_WEB)) {
apply { apply {
plugin(libs.plugins.spring.dependency.management.get().pluginId)
plugin(libs.plugins.spring.boot.get().pluginId)
plugin(libs.plugins.kotlin.plugin.spring.get().pluginId) plugin(libs.plugins.kotlin.plugin.spring.get().pluginId)
} }
dependencies { ext {
implementation(libs.springBootStarter.web) setProperty(ProjectFlags.USE_SPRING_BOOT_WEB, true)
setProperty(ProjectFlags.USE_SPRING_CLOUD_BOM, true)
testImplementation(libs.springBootStarter.test) setProperty(ProjectFlags.USE_LLM_KT_IMPL_DEPENDENCE, true)
testRuntimeOnly(libs.junitPlatform.launcher)
} }
}
// llmx-core-spi
if (project.getPropertyByBoolean(ProjectFlags.USE_LLM_CORE_SPI)) {
dependencies { dependencies {
// Nacos 服务发现和配置
implementation(libs.springCloudStarter.alibaba.nacos.discovery)
// 核心spi依赖
implementation(project(Modules.Core.SPI)) implementation(project(Modules.Core.SPI))
// okHttp依赖
implementation(libs.okHttp)
// forgeBoot依赖
implementation(libs.forgeBoot.core.extension)
implementation(libs.forgeBoot.core.extension)
} }
} }
// springCloudBom // springCloudBom
@ -94,11 +92,34 @@ subprojects {
implementation(platform(libs.springCloudDependencies.bom)) implementation(platform(libs.springCloudDependencies.bom))
} }
} }
if(project.getPropertyByBoolean(ProjectFlags.USE_SPRING_BOOT_BOM)){ // springBootBom
if (project.getPropertyByBoolean(ProjectFlags.USE_SPRING_BOOT_BOM)) {
dependencies { dependencies {
implementation(platform(libs.springBootDependencies.bom)) implementation(platform(libs.springBootDependencies.bom))
} }
} }
// springbootWeb
if (project.getPropertyByBoolean(ProjectFlags.USE_SPRING_BOOT_WEB)) {
apply {
plugin(libs.plugins.spring.boot.get().pluginId)
}
dependencies {
implementation(libs.springBootStarter.web)
implementation(platform(libs.springBootDependencies.bom))
testImplementation(libs.springBootStarter.test)
testRuntimeOnly(libs.junitPlatform.launcher)
}
}
// 使用kt实现impl服务依赖
if (project.getPropertyByBoolean(ProjectFlags.USE_LLM_KT_IMPL_DEPENDENCE)) {
dependencies {
// jackson kt模块依赖
implementation(libs.jackson.module.kotlin)
// kt协程依赖
implementation(libs.kotlinx.coruntes.reactor)
}
}
} }
val libs = rootProject.libs val libs = rootProject.libs
apply { apply {

View File

@ -2,6 +2,11 @@ object ProjectFlags {
const val USE_SPRING_BOOT_WEB = "useSpringBootWeb" const val USE_SPRING_BOOT_WEB = "useSpringBootWeb"
const val USE_SPRING_BOOT_BOM = "useSpringBootBom" const val USE_SPRING_BOOT_BOM = "useSpringBootBom"
const val USE_SPRING_CLOUD_BOM = "useSpringCloudBom" const val USE_SPRING_CLOUD_BOM = "useSpringCloudBom"
const val USE_LLM_CORE_SPI = "useLLMCoreSPI" const val USE_LLM_KT_IMPL_DEPENDENCE = "useLLMKtImplDependence"
const val IS_ROOT_MODULE = "isRootModule" const val IS_ROOT_MODULE = "isRootModule"
/**
* 使用实现服务第三方平台依赖
*/
const val USE_LLM_IMPL_PLATFORM_DEPENDENCE = "useLLMImplPlatformDependence"
} }

View File

@ -5,7 +5,7 @@ spring-boot-version = "3.2.4"
spring-dependency-management-version = "1.1.7" spring-dependency-management-version = "1.1.7"
aliyun-bailian-version = "2.0.0" aliyun-bailian-version = "2.0.0"
spring-cloud-starter-alibaba-nacos-discovery-version = "2023.0.1.0" spring-cloud-starter-alibaba-nacos-discovery-version = "2023.0.1.0"
forgeBoot-version = "1.1.0-SNAPSHOT" forgeBoot-version = "1.2.0-SNAPSHOT"
okHttp-version = "4.12.0" okHttp-version = "4.12.0"
jib-version = "3.4.2" jib-version = "3.4.2"
org-reactivestreams-reactiveStreams-version = "1.0.4" org-reactivestreams-reactiveStreams-version = "1.0.4"

View File

@ -13,7 +13,7 @@ dependencies {
implementation(libs.springCloudStarter.loadbalancer) implementation(libs.springCloudStarter.loadbalancer)
implementation(project(Modules.Core.SPI)) implementation(project(Modules.Core.COMMON))
// Kotlin Coroutines // Kotlin Coroutines
implementation(libs.kotlinx.coruntes.reactor) implementation(libs.kotlinx.coruntes.reactor)

View File

@ -6,7 +6,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient
@SpringBootApplication @SpringBootApplication
@EnableDiscoveryClient @EnableDiscoveryClient
class LlmxCoreServiceApplication open class LlmxCoreServiceApplication
/** /**
* 程序的入口点 * 程序的入口点

View File

@ -1,36 +1,36 @@
//package org.jcnc.llmx.core.service.config package org.jcnc.llmx.core.service.config
//
//import com.gewuyou.forgeboot.core.extension.log import com.gewuyou.forgeboot.core.extension.log
//import org.springframework.context.annotation.Configuration import org.springframework.context.annotation.Configuration
//import org.springframework.web.servlet.config.annotation.CorsRegistry import org.springframework.web.servlet.config.annotation.CorsRegistry
//import org.springframework.web.servlet.config.annotation.WebMvcConfigurer import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
//
///** /**
// * CORS配置类 * CORS配置类
// * *
// * 该类用于全局配置跨域请求设置,以确保前端应用可以与后端服务进行通信 * 该类用于全局配置跨域请求设置以确保前端应用可以与后端服务进行通信
// * 主要通过重写addCorsMappings方法来配置跨域请求映射以及通过corsWebFilter方法来提供更细粒度的跨域支持 * 主要通过重写addCorsMappings方法来配置跨域请求映射以及通过corsWebFilter方法来提供更细粒度的跨域支持
// * *
// * @since 2025-04-02 17:03:41 * @since 2025-04-02 17:03:41
// * @author gewuyou * @author gewuyou
// */ */
//@Configuration @Configuration
//open class CorsConfig : WebMvcConfigurer { open class CorsConfig : WebMvcConfigurer {
// /** /**
// * 添加跨域请求映射 * 添加跨域请求映射
// * *
// * 该方法重写了父接口中的addCorsMappings方法用于配置全局的跨域请求规则 * 该方法重写了父接口中的addCorsMappings方法用于配置全局的跨域请求规则
// * 主要配置了允许所有路径、所有来源、常见HTTP方法、所有请求头的跨域请求并设置了不携带Cookie以及预检请求缓存时间 * 主要配置了允许所有路径所有来源常见HTTP方法所有请求头的跨域请求并设置了不携带Cookie以及预检请求缓存时间
// * *
// * @param registry 跨域请求注册表,用于添加跨域请求映射 * @param registry 跨域请求注册表用于添加跨域请求映射
// */ */
// override fun addCorsMappings(registry: CorsRegistry) { override fun addCorsMappings(registry: CorsRegistry) {
// log.info("Web CORS配置生效") log.info("Web CORS配置生效")
// registry.addMapping("/**") // 匹配所有路径 registry.addMapping("/**") // 匹配所有路径
// .allowedOrigins("*") // 允许所有来源(生产环境建议指定具体域名) .allowedOrigins("*") // 允许所有来源(生产环境建议指定具体域名)
// .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许的HTTP方法 .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许的HTTP方法
// .allowedHeaders("*") // 允许所有请求头 .allowedHeaders("*") // 允许所有请求头
// .allowCredentials(false) // 是否允许携带Cookietrue时需要明确指定allowedOrigins不能为* .allowCredentials(false) // 是否允许携带Cookietrue时需要明确指定allowedOrigins不能为*
// .maxAge(3600) // 预检请求缓存时间(秒) .maxAge(3600) // 预检请求缓存时间(秒)
// } }
//} }

View File

@ -5,11 +5,8 @@ import com.gewuyou.forgeboot.webmvc.version.annotation.ApiVersion
import org.jcnc.llmx.core.common.entities.request.ChatRequest import org.jcnc.llmx.core.common.entities.request.ChatRequest
import org.jcnc.llmx.core.common.entities.response.ChatResponsePart import org.jcnc.llmx.core.common.entities.response.ChatResponsePart
import org.jcnc.llmx.core.service.service.impl.LLMServiceImpl import org.jcnc.llmx.core.service.service.impl.LLMServiceImpl
import org.reactivestreams.Publisher import org.reactivestreams.Publisher
import org.springframework.http.MediaType import org.springframework.http.MediaType
import org.springframework.web.bind.annotation.CrossOrigin
import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestMapping
@ -24,7 +21,6 @@ import org.springframework.web.bind.annotation.RestController
@ApiVersion @ApiVersion
@RestController @RestController
@RequestMapping("/chat") @RequestMapping("/chat")
@CrossOrigin(origins = ["*"]) // 放宽跨域
class ChatController( class ChatController(
private val llmServiceImpl: LLMServiceImpl private val llmServiceImpl: LLMServiceImpl
) { ) {

View File

@ -1,24 +1,6 @@
// 开启LLM实现平台依赖
// 开启springboot setProperty(ProjectFlags.USE_LLM_IMPL_PLATFORM_DEPENDENCE, true)
setProperty(ProjectFlags.USE_SPRING_BOOT_WEB, true)
setProperty(ProjectFlags.USE_SPRING_CLOUD_BOM,true)
dependencies { dependencies {
// Nacos 服务发现和配置
implementation(libs.springCloudStarter.alibaba.nacos.discovery)
implementation(project(Modules.Core.SPI))
implementation(libs.kotlinx.coruntes.reactor)
implementation(libs.okHttp)
implementation(libs.forgeBoot.core.extension)
implementation(libs.jackson.module.kotlin)
implementation(libs.forgeBoot.core.extension)
implementation(libs.aliyun.bailian) implementation(libs.aliyun.bailian)
} }

View File

@ -1,19 +1,5 @@
// 开启springboot // 开启LLM实现平台依赖
setProperty(ProjectFlags.USE_SPRING_BOOT_WEB, true) setProperty(ProjectFlags.USE_LLM_IMPL_PLATFORM_DEPENDENCE, true)
setProperty(ProjectFlags.USE_SPRING_CLOUD_BOM,true)
dependencies { dependencies {
// Nacos 服务发现和配置
implementation(libs.springCloudStarter.alibaba.nacos.discovery)
implementation(project(Modules.Core.SPI))
implementation(libs.kotlinx.coruntes.reactor)
implementation(libs.okHttp)
implementation(libs.forgeBoot.core.extension)
implementation(libs.jackson.module.kotlin)
implementation(libs.forgeBoot.core.extension)
} }