gradle使用心得
gradle环境搭建前先使用java -version检测Java环境;如果输出java -version不是内部命令即先搭建Java环境
如果输出下图即继续;
下载解压 进入环境配置:
一、新建GRADLE_HOME的环境变量;路径指向Gradle根目录
二、将%GRADLE_HOME%\bin配置到PATH中
三、cmd输入gradle -v 配置成功
本地仓库修改
gradle依赖的第三方jar包默认在用户本地库目录(缓存目录)在系统盘上,为了提高系统性能;我们将Gradle的本地仓库修改到指定的盘符预计文件夹。
首先博主以D盘为例;使用cmd命令切换到D盘下的Programma目录下;使用md .gradle创建一个.gradle文件夹;
如图所示
方法一,修改gradle启动脚本,进入gradle安装的bin目录,使用文本编辑器打开gradle.bat文件,在如图的位置添加以下语句
set GRADLE_OPTS="-Dgradle.user.home=D:\Programme\.gradle"
方法二 使用Windows环境变量设置gradle用户目录,通过环境变量的方式,gradle会读取环境变量,所有的项目都会自动修改过来,非常方便。
进入环境变量设置后,新建一个GRADLE_USER_HOME,值为D:\Programme\.gradle,设置完成之后,点击确定,关闭设置窗口。这个时候可以去idea中看下gradle的用户目录,自动变成了环境变量中的值了
远程仓库配置
一般Gradle、maven从*仓库mavenCentral()
http://repo1.maven.org/maven2/下载依赖包,但是在国内下载速度巨慢,我们只能使用国内的镜像。
所以每个Gradle构建的项目中,我们可以在build.gradle做如下配置
repositories {
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
mavenCentral()
}
每个项目都如此配置难免麻烦些,我们可以配置一个全局配置文件。
.gradle\init.gradle
allprojects{
repositories {
def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
remove repo
}
}
}
maven {
url REPOSITORY_URL
}
}
}
init.gradle简介
init.gradle文件在build开始之前执行,所以你可以在这个文件配置一些你想预先加载的操作
例如配置build日志输出、配置你的机器信息,比如jdk安装目录,配置在build时必须个人信息,比如仓库或者数据库的认证信息,and so on.
启用init.gradle文件的方法:
1、在命令行指定文件,例如:gradle –init-script yourdir/init.gradle -q taskName.你可以多次输入此命令来指定多个init文件
2、把init.gradle文件放到USER_HOME/.gradle/ 目录下.
3、把以.gradle结尾的文件放到USER_HOME/.gradle/init.d/ 目录下.
4、把以.gradle结尾的文件放到GRADLE_HOME/init.d/ 目录下.
如果存在上面的4种方式的2种以上,gradle会按上面的1-4序号依次执行这些文件,如果给定目录下存在多个init脚本,会按拼音a-z顺序执行这些脚本
类似于build.gradle脚本,init脚本有时groovy语言脚本。每个init脚本都存在一个对应的gradle实例,你在这个文件中调用的所有方法和属性,都会
委托给这个gradle实例,每个init脚本都实现了Script接口
下面的例子是在build执行之前给所有的项目制定maven本地库,这个例子同时在 build.gradle文件指定了maven的仓库中心,注意它们之间异同
build.gradle
repositories {
mavenCentral()
}
task showRepos << {
println "All repos:"
println repositories.collect { it.name }
}
init.gradle
allprojects {
repositories {
mavenLocal()
}
}
在命令行输入命令:gradle –init-script init.gradle -q showRepos
> gradle --init-script init.gradle -q showRepos
All repos:
[MavenLocal, MavenRepo]