Gradle
Gradle 简介
官网:https://gradle.org/
用户文档:https://docs.gradle.org/current/userguide/userguide.html
快速上手:https://juejin.cn/column/7123935861976072199
安装Gradle
- 安装文档:https://docs.gradle.org/current/userguide/installation.html#ex-installing-manually
Macos: brew install gradle
Windows: 下载安装包,解压到指定目录,配置环境变量
Linux: 下载安装包,解压到指定目录,配置环境变量
装不装gradle在本机都行,因为每个项目都会有Wrapper ,如果你不需要脱离项目执行gradle命令,那么就不需要安装gradle
配置
隐私信息
在公司项目里,我们经常会使用公司的私有maven仓库,这个时候就需要配置一下隐私信息
- 创建配置文件
在用户目录下的.gradle文件夹下新建一个gradle.properties文件,内容如下:
如果没有自定义路径,.gradle一般都在当前用户目录下
Macos:/Users/用户名/.gradle
Windows:C:\Users\用户名\.gradle
Linux:/home/用户名/.gradle
# 公司的nexus maven仓库链接地址都是固定的不用变 key为固定值 不可更改项目里会读取 添加company前缀 便于区分
companyNexusSnapshotsRepoUrl=https://nexus.tiangong.site/repository/aikero-snapshots
companyNexusReleasesRepoUrl=https://nexus.tiangong.site/repository/aikero-releases
companyNexusRepositoryUrl=https://nexus.tiangong.site/repository/aikero-public
companyNexusUsername=你自己Nexus的账号名
companyNexusPassword=你自己Nexus的密码
catalogPluginVersion=0.1.3 # 版本目录插件版本 与自定义插件版本一致- 配置初始化文件
在用户目录的.gradle文件夹中创建init.gradle.kts文件,用于进行全局初始化配置。
例如: 对于不适合发布到 Gradle 插件中心或 Nexus 的插件,可以在此文件中统一配置。
我司的配置如下:
// # https://docs.gradle.org/current/userguide/plugins.html#sec:plugin_management
beforeSettings {
val catalogPluginVersion: String by settings
pluginManagement {
repositories {
mavenLocal()
maven {
url = uri(providers.gradleProperty("companyNexusRepositoryUrl").get())
isAllowInsecureProtocol = true
credentials {
username = providers.gradleProperty("companyNexusUsername").get()
password = providers.gradleProperty("companyNexusPassword").get()
}
}
gradlePluginPortal()
}
plugins {
id("team.aikero.blade.gradle.plugin.version-catalog") version "${catalogPluginVersion}" // 这里获取的是 gradle.properties 里的catalogPluginVersion版本号
}
}
}- 覆盖配置
按照gradle的优先级,项目中的配置会覆盖全局配置,如果项目中有配置,会覆盖全局配置,比如需要自定义插件版本,可以在项目中 settings.gradle.kts配置
一般不需要修改,如果重新开发或调试的可以修改如下:
pluginManagement {
repositories {
mavenLocal()
maven {
url = uri(providers.gradleProperty("companyNexusRepositoryUrl").get())
isAllowInsecureProtocol = true
credentials {
username = providers.gradleProperty("companyNexusUsername").get()
password = providers.gradleProperty("companyNexusPassword").get()
}
}
gradlePluginPortal()
}
}
plugins {
id("team.aikero.blade.gradle.plugin.version-catalog") version ("自定义的版本号") // 可以自定义版本号
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}仓库配置
在项目的settings.gradle.kts文件中配置仓库
plugins {
id("team.aikero.blade.gradle.plugin.version-catalog")
id("org.gradle.toolchains.foojay-resolver-convention")
}dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenLocal()
maven {
url = uri(providers.gradleProperty("companyNexusRepositoryUrl").get())
isAllowInsecureProtocol = true
credentials {
username = providers.gradleProperty("companyNexusUsername").get()
password = providers.gradleProperty("companyNexusPassword").get()
}
}
mavenCentral()
gradlePluginPortal()
}
}提示
如果不想在项目中配置,可以使用插件的方式配置,插件ID:team.aikero.blade.gradle.plugin.version-catalog
