You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle复合构建疑问:WebServer项目如何引入API模块

Gradle复合构建/多项目构建配置指南(解决WebServer引用Core模块问题)

先理清两个关键概念

  • 多项目构建:Core和WebServer在同一个根目录下,属于同一个父项目,适合模块间关联紧密的场景。
  • 复合构建:Core和WebServer是完全独立的两个项目,通过Gradle配置关联,适合模块分属不同仓库或目录的场景。

方案1:多项目构建(如果两个模块在同一根目录)

假设你的项目结构是:

jed2k/
├── core/
│   └── build.gradle
├── WebServer/
│   └── build.gradle
└── settings.gradle
  1. 根目录创建settings.gradle
    在jed2k根目录新建settings.gradle文件,内容如下:
rootProject.name = 'jed2k'
include ':core', ':WebServer'

这行代码会告诉Gradle,当前根项目包含core和WebServer两个子模块。

  1. 修正WebServer依赖配置
    在WebServer的build.gradle中,将依赖声明改为标准写法:
implementation(project(":core"))
  1. 解决Java版本兼容问题
    Core用Java 11,WebServer用Java 17,必须保证Core编译出的字节码能被Java 17兼容。在Core的build.gradle中添加:
tasks.withType(JavaCompile) {
    options.release = 11
}

方案2:复合构建(如果两个项目独立)

如果WebServer和Core不在同一根目录,比如:

jed2k-core/
└── core/
    └── build.gradle
jed2k-webserver/
└── WebServer/
    └── build.gradle
  1. 配置WebServer的settings.gradle
    在WebServer项目的根目录新建或修改settings.gradle,添加对Core项目的引用:
rootProject.name = 'WebServer'
includeBuild('/home/david/Documents/jed2k/core') // 替换为Core项目的实际路径
  1. 保持WebServer依赖配置
    WebServer的build.gradle中保留:
implementation(":core")

Gradle会自动识别复合构建中的Core模块。


现有配置的优化点

  1. Core的build.gradle精简
    java-library插件已经包含了java插件,无需重复apply plugin: 'java';如果不需要将Core打包成可执行程序,删掉apply plugin: 'application',精简后:
plugins {
    id 'java-library'
}

group = 'org.dkf.jed2k'
version = '2.0'

description = "jed2k core library"

sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11

tasks.withType(JavaCompile) {
    options.release = 11
}

repositories {
    mavenCentral()
    // jcenter已停止服务,建议删除
}

test {
    useJUnit()
    maxHeapSize = '1G'
}

dependencies {
    api group: 'org.slf4j', name: 'slf4j-jdk14', version:'1.7.33'
    implementation 'com.google.re2j:re2j:1.6'
    implementation 'com.google.code.gson:gson:2.8.8'
    implementation 'com.squareup.okhttp:okhttp:2.7.5'
    testImplementation group: 'junit', name: 'junit', version:'4.13.2'
    testImplementation group: 'org.mockito', name: 'mockito-core', version: '2.0.111-beta'
}
  1. 移除过时仓库
    Core的repositories里的jcenter()已经停止服务,建议删除,避免构建失败。

验证方法

  1. 执行WebServer项目的gradle build命令,检查是否能成功编译。
  2. 在WebServer代码中尝试导入Core的类(如import org.dkf.jed2k.xxx;),IDE如果未识别,刷新Gradle项目即可。

内容的提问来源于stack exchange,提问作者dfpmola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 09:20:57