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

如何在IntelliJ+Gradle中直接依赖公共项目而非Jar包(微服务场景)

问题描述

我们有多个Spring Boot微服务依赖独立仓库里的公共代码(打包为common.jar),目前所有微服务都是通过Jar包引入公共代码,配置如下:

// gradle.properties 中的配置
implementation ("com.boa.dart:funding-common:23.5.1.108")  --> 生产环境配置
implementation files("libs/funding-common.23.5.1.108.jar") --> 本地开发配置

每次修改公共项目代码时,流程太繁琐:改完公共代码要先构建Jar,再把Jar复制到每个微服务的目录,最后逐个构建微服务。想优化这个流程,实现不用生成common.jar,微服务直接用公共项目的代码。

技术栈:Gradle构建工具、Spring Boot微服务、IntelliJ IDE。

解决方案

方法1:Gradle多项目构建(首推)

把公共项目和所有微服务放到同一个Gradle根项目下,用项目依赖替代Jar依赖,彻底跳过打包复制步骤。

1.1 调整项目结构

按如下目录结构整理项目:

根项目/
├── settings.gradle(或 settings.gradle.kts)
├── funding-common/      // 公共代码模块
│   ├── build.gradle
│   └── src/
├── 微服务A/
│   ├── build.gradle
│   └── src/
└── 微服务B/
    ├── build.gradle
    └── src/

1.2 配置根项目的settings.gradle

在根项目的settings.gradle里注册所有模块:

rootProject.name = '根项目名称'
include ':funding-common'
include ':微服务A'
include ':微服务B'
// 其他微服务依次添加

1.3 修改微服务的依赖配置

把每个微服务build.gradle里原有的Jar依赖,替换成项目依赖:

// 删掉原来的implementation ("com.boa.dart:funding-common:xxx") 或 files(...)
implementation(project(':funding-common'))

1.4 开发流程优化

改完funding-common的代码后,直接运行或构建微服务就行——Gradle会自动同步公共项目的最新代码,不用手动打包、复制Jar,全程自动关联。

方法2:本地Maven仓库快照发布(适合公共项目独立仓库场景)

如果公共项目必须单独维护仓库,就配置Gradle自动把公共项目发布到本地Maven仓库,微服务依赖本地快照版本,避免手动复制Jar。

2.1 公共项目配置

在funding-common的build.gradle里添加Maven发布插件,并用SNAPSHOT版本标识开发中的代码:

plugins {
    id 'maven-publish'
}

group = 'com.boa.dart'
version = '23.5.1-SNAPSHOT' // SNAPSHOT表示是开发中可更新的版本

publishing {
    publications {
        maven(MavenPublication) {
            from components.java
        }
    }
}

执行命令./gradlew publishToMavenLocal,把公共项目发布到本地Maven仓库(默认路径是~/.m2/repository)。

2.2 微服务依赖配置

替换原Jar依赖为本地快照版本:

implementation ("com.boa.dart:funding-common:23.5.1-SNAPSHOT")

为了确保每次构建都拉取最新的快照,在微服务的build.gradle里添加缓存禁用配置:

configurations.all {
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds' // 不缓存快照,每次都取最新
}

2.3 开发流程优化

改完公共项目代码后,执行publishToMavenLocal,微服务构建时会自动拉取本地最新的快照版本,不用手动复制Jar。

方法3:IntelliJ直接关联项目(临时调试用)

如果不想动Gradle配置,只是临时调试公共代码,可通过IntelliJ直接关联公共项目,实现代码热同步。

  • 打开微服务项目,点击File > Project Structure > Modules
  • 点+号选Import Module,选中公共项目的build.gradle导入
  • 在微服务模块的Dependencies标签页,删掉原有的Jar依赖,添加Module Dependency,选择导入的funding-common模块
  • 保存配置后,改公共项目的代码,微服务会自动同步最新代码,运行或构建时直接用本地源码
注意事项
  • 多项目构建适合团队统一管理所有项目的场景,CI/CD也能统一构建,效率最高
  • 本地快照方式适合公共项目需要独立维护的场景,兼顾开发效率和项目独立性
  • IntelliJ直接关联只适合临时调试,不适合长期团队协作用——换个开发环境就得重新配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 12:10:30