人间工作P 人间工作P
主站 (opens new window)
首页
  • Bukkit开发教程
投喂
关于
  • 分类
  • 标签
  • 时间线
  • 友情链接

人间工作P

我每天都好困… 最近在学习和进行 VOCALOID 创作
主站 (opens new window)
首页
  • Bukkit开发教程
投喂
关于
  • 分类
  • 标签
  • 时间线
  • 友情链接
  • Gradle 杂交不同编译目标(Java)的模块到一个jar

MrXiaoM
2025-01-29
Gradle

Gradle 杂交不同编译目标(Java)的模块到一个jar

多个 Java 版本目标的模块,合并到一个jar

在制作 FiguraAuthProvider 的时候遇到的问题。

我的项目 Java 目标版本是 Java 8,但是 Velocity 需要 Java 17 才能编译,所以我把 Velocity 模块的目标设置成了 Java 17。

我想把 Velocity 模块也要打包到 -all 包里面,但是因为低版本不能依赖高版本的模块,直接添加 shadow(project(":velocity")) 会报错。

加一个 configuration 就可以做到,不添加依赖也可以 shadow 打包了。

// shadowLink 可以改成你喜欢的任何名称,只要不和原来的冲突就行
val shadowLink = configurations.create("shadowLink")

dependencies {
  //...
  "shadowLink"(project(":velocity"))
  // 或者这样
  add("shadowLink", project(":velocity"))
}

tasks.shadowJar {
  configurations = listOf(shadowLink)
  // 如果需要 implementation、shadow 等也要打包,用以下代码更好
  configurations.add(shadowLink)
  // 如果你不想创建变量 shadowLink,那么使用 project.configurations.getByName("shadowLink")
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
编辑 (opens new window)
#编程#Gradle
上次更新: 2025/04/15, 12:49:46
最近更新
01
记一次从 Sonatype OSSRH 迁移到 Maven Central Publishing Portal
04-24
02
构建 Paper 衍生服务端(Purpur、Folia 等)时使用代理避免拉取失败
02-24
03
FiguraLambda 的版本兼容说明
01-26
更多文章>
Theme fork from Vdoing | Copyright © 2018-2025 人间工作P | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式