Gradle 的一些小技巧
讲一点自己的心得
整理一些小技巧,不定期更新。以 kotlin dsl (build.gradle.kts
) 为主。
# Maven 仓库添加
一般来说,我们通常直接在 repositories 里添加仓库,越在前面的优先级越高。
repositories {
maven("https://mirrors.huaweicloud.com/repository/maven/")
mavenCentral()
}
1
2
3
4
2
3
4
但是,一些仓库在不同地区的速度不同,例如上述的华为云镜像在 Github Actions 上的效果就不一定有 Maven Central 官方仓库好。当我们需要这个项目仅在中国地区的机器上运行时使用该仓库,可以使用 java.util.Locale
实现这个功能。
import java.util.Locale
repositories {
if (Locale.getDefault().country == "CN") {
maven("https://mirrors.huaweicloud.com/repository/maven/")
}
mavenCentral()
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 依赖添加
实际上,依赖可以使用以下三种格式
dependencies {
// 这两种适用于一般情况
配置名(group="分组", name="构件名", version="版本", classifier="分类", ext="扩展名")
配置名("分组:构件名:版本:分类@扩展名")
// 这种适用于在 subprojects 块中,也就是项目还在早期加载阶段,出不来配置名补全的时候使用
add("配置名", "分组:构件名:版本:分类@扩展名")
}
1
2
3
4
5
6
7
2
3
4
5
6
7
我们最常用的是以下格式
配置名("分组:构件名:版本:分类@扩展名")
// 例如
compileOnly("com.google.code:gson:2.8.0")
1
2
3
2
3
其中,分类
默认为""
,扩展名默认为"jar"
,这俩可以不输入。
最终会将组名的.
替换为/
,下载 组名/构件名/版本/构件名-版本(-分类).扩展名
这个文件,例如上述的 gson 为 com/google/code/gson/2.8.0/gson-2.8.0.jar
。
分类通常用于 shadowJar (opens new window),例如通过 shadow 打包的文件名都会有个 -all
结尾,这个 all
就是分类。
为什么我要研究这个呢?因为我在 lumine 的仓库遇到了这玩意 (opens new window)。
org/spigotmc/spigot-1.7.10/dev/spigot-1.7.10-dev.8.jar
别看了,Nexus Repository 给的 Usage 是错的,在这种情况下,特别还是不知道上面这些知识的时候,你要怎么引用这个依赖?
了解以上的知识后,就可以反向猜出
- 分组为
org.spigotmc
- 构件名为
spigot-1.7.10
- 版本为
dev
- 扩展名为
8.jar
是的,扩展名为 8.jar
,这是哪个神人想出来这样发版的,给我气笑了。最终可以这样在 Gradle 添加依赖。
compileOnly(group="org.spigotmc", name="spigot-1.7.10", version="dev", ext="8.jar")
compileOnly("org.spigotmc:spigot-1.7.10:dev@8.jar")
add("compileOnly", "org.spigotmc:spigot-1.7.10:dev@8.jar")
1
2
3
2
3
编辑 (opens new window)
上次更新: 2025/08/28, 20:45:16