如何将Gradle模块作为依赖引入Maven项目使用
Gradle模块作为依赖引入Maven项目的实现方案
以下是生产环境常用的3种可落地方案,按推荐优先级排序:
方案1:发布到本地Maven仓库(本地调试首选)
- 第一步:在待引入的Gradle模块的构建配置文件中添加Maven发布插件。如果使用Groovy DSL(
build.gradle)添加如下配置:
plugins { id 'java' // 如果是Android库模块替换为id 'com.android.library' id 'maven-publish' } publishing { publications { maven(MavenPublication) { // 自定义依赖坐标,Maven侧引用时要和这里完全一致 groupId = 'com.custom.group' artifactId = 'gradle-business-module' version = '0.0.1-snapshot' // Java模块用下面这行,直接发布java组件 from components.java // Android库模块注释掉上面一行,用下面这行发布release构建产物 // from components.release } } repositories { mavenLocal() // 发布目标为本地Maven仓库,默认路径为用户目录下的.m2/repository } }
如果使用Kotlin DSL(build.gradle.kts),配置逻辑一致,仅语法做对应调整即可。
- 第二步:在Gradle项目根目录执行发布命令:
- macOS/Linux系统执行:
./gradlew publishToMavenLocal - Windows系统执行:
gradlew.bat publishToMavenLocal
- macOS/Linux系统执行:
- 第三步:直接在Maven项目的
pom.xml中添加对应坐标的依赖即可,和引用普通Maven依赖没有区别,Maven默认会优先扫描本地仓库的包:
<dependency> <groupId>com.custom.group</groupId> <artifactId>gradle-business-module</artifactId> <version>0.0.1-snapshot</version> </dependency>
*注意:该方案无需搭建额外服务,修改Gradle模块代码后重新执行发布命令,Maven侧就能拉到最新代码,适合本地开发调试场景。
方案2:发布到远程Maven仓库(团队协作/生产环境首选)
如果需要团队其他成员、或者CI/CD环境也能引用这个Gradle模块,优先用这个方案:
- 配置逻辑和发本地仓库几乎一致,仅需要把发布目标仓库替换为你可访问的Maven仓库(公司内部搭建的Nexus/Artifactory、或者公共Maven仓库均可),补充仓库认证信息即可,示例配置:
publishing { publications { maven(MavenPublication) { groupId = 'com.custom.group' artifactId = 'gradle-business-module' version = '1.0.0-release' from components.java } } repositories { maven { url = uri("http://your-internal-nexus/repository/maven-releases/") // 认证信息建议写在全局gradle.properties中,不要硬编码在构建脚本里 credentials { username = nexusUsername password = nexusPassword } } } }
- 执行
./gradlew publish命令将构建产物推送到远程仓库后,在Maven项目的pom.xml中添加对应远程仓库配置、以及依赖坐标,即可正常引用。
*注意:如果发布的是正式版本,建议不要重复推送同版本号的包,避免出现依赖缓存不一致的问题。
方案3:直接引用本地构建产物(临时验证场景用)
如果只是临时验证功能,不想做发布配置,可以直接引用Gradle模块编译出的二进制包:
- 第一步:在Gradle模块目录执行构建命令
./gradlew build,构建完成后:- Java模块的jar包路径为:模块目录下
build/libs/xxx.jar - Android库模块的aar包路径为:模块目录下
build/outputs/aar/xxx.aar
- Java模块的jar包路径为:模块目录下
- 第二步:在Maven项目根目录新建
lib文件夹,把编译好的jar/aar包放进去,在pom.xml中添加本地仓库配置和依赖:
<!-- 配置本地lib目录为依赖仓库 --> <repositories> <repository> <id>local-file-repo</id> <url>file://${project.basedir}/lib</url> </repository> </repositories> <!-- 添加依赖 --> <dependency> <groupId>com.custom.group</groupId> <artifactId>gradle-business-module</artifactId> <version>1.0.0</version> <!-- 引用aar包时需要加下面这行指定类型,jar包不需要 --> <!-- <type>aar</type> --> </dependency>
*注意:该方案不会自动传递Gradle模块的间接依赖,如果Gradle模块本身引用了第三方库,需要手动在Maven项目的pom.xml中补充所有间接依赖,否则运行时会出现类缺失错误,不建议在正式项目中长期使用。
内容的提问来源于stack exchange,提问作者Pkumar
相关产品推荐
相关产品推荐

