Gradle

gradle项目的一些配置解释和问题


一、gradle名词

1.1 gradle-wrapper.properties
每一个用gradle编译的工程,都会有一个gradle\wrapper目录
该目录下有2个文件:
1、gradle-wrapper.jar
2、gradle-wrapper.properties

gradle-wrapper.properties:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists //指定的目录下的子目录。
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists //指定的目录下的子目录。
distributionUrl=https://mirrors.aliyun.com/gradle/gradle-7.6-bin.zip //指定gradle使用的版本以及下载的镜像源,国内一般会用阿里的

:distributionBase和distributionPath组合在一起是解压gradle-3.1-bin.zip之后的文件的存放位置。
zipStoreBase和zipStorePath组合在一起,是下载的gradle-3.1-bin.zip所存放的位置。
zipStoreBase和distributionBase有两种取值:
1、GRADLE_USER_HOME //表示用户目录
2、PROJECT //工程的当前目录,即gradlew所在的目录
windows目录:%USERPROFILE%/.gradle。如C:\Users<user_name>.gradle
linux目录:$HOME/.gradle。如~/.gradle

修改默认本机仓库位置方法:

要修改gradle默认C:\Users<user_name>.gradle\的位置则修改IDEA当中gradle的位置就行如下:
在这里插入图片描述

1.2 gradle安装目录

.gradle顶级目录
caches | gradle缓存目录 子:modules-2 gradle下载的jar/aar目录
daemon | daemon日志目录
native | gradle平台相关目录
wrapper |gradle-wrapper下载目录
init.gradle的作用:
1)可以用来建立公司内部的配置
2)可以用来配置一些全局属性,如配置持续集成服务器的地址,依赖下载的地址
3)可以用来提供构建所需要的用户的个人信息,如仓库或数据库的用户名和密码。
4)可以用来定义开发者机器的环境,比如定义jdk安装在什么位置,android sdk安装在什么位置等等。
5)可以用来注册一些监听器。比如监听Gradle事件的发生,做一些额外的操作,
例如需要对某个项目构建前和构建后做一些操作,又例如对项目的依赖做检测,检测是否含有snapshot包,在release构建中一般来说是禁止依赖snapshot包的,所以这时候就可以扔出一个异常。

1.3 gradle项目中

1)settings.gradle 文件: 用于确定哪些模块参与构建;

2)根目录下 build.gradle 文件: 用于定义所有子模块公共的配置参数;

3)模块下 build.gradle 文件: 用于定义子模块的配置参数,它可以覆盖项目级 build.gradle 文件中定义的配置;

4)gradle.properties: 用作项目级 Gradle 配置项,会覆盖全局的配置项;

5)local.properties: 用作项目的私有属性配置,例如 SDK 安装目录,一般不把 local.properties
加入版本控制。

二、gradle项目中的应用解释:

2.1:implementation、api、compileOnly三种依赖方式

implementation:参与编译和打包,依赖的包不对其它工程开放

implementation:依赖的时候不带版本号如:
(implementation ‘org.springframework.boot:spring-boot-starter-data-jpa’) 一般情况下,我们会把复制来的版本号给去掉,以防Spring Boot已经对它做了版本管理,这样我们就能直接下载兼容性良好的依赖包;如果去掉版本后不能下载依赖包,意味着Spring Boot没有做该包的版本管理,这时我们按照自己的需要添加合适的版本号。

api : 参与编译和打包,依赖的包对其它工程开放

compileOnly: 参与编译但不参与打包 依赖的包对其它工程不开放。
如果整个工程紧使用comileOnly方式依赖某个包,在使用时编译不报错,但运行的时候会找不到该类。如果有其它moudle使用了implementation或者api方式依赖,那么运行时就不会报错,最终依赖的是其它module所导入的包

三、项目使用

3.1命令:

1、打包指令:
 ./gradlew build -x test //-x test代表排除test包构建
2、推送包到私有仓库:
./gradlew publish -D参数="帅哥"//-D和java的一样携带参数build.gradle使用System.getProperty("system")获取

3.2 gradle代码语法

//获取参数
project.findProperty("参数") 
System.getenv("参数")
project.property('password')
project.properties["USE_LOCAL_FLUTTER"]
providers.environmentVariable("ENVIRONMENTAL").get()
System.getProperty("system")
rootProject.ext.username
//打印
println "build version = " + version
//定义全局参数
ext{
    字段1='test'
    字段2="test1"
}

3.3项目参数解释/使用

//dependencyManagement是dependency的上一级,定义dependencyManagement在dependency可以不引用具体版本号,和io.spring.dependency-management有点相同的功能
dependencyManagement {
    imports {
        mavenBom "org.springframework.boot:spring-boot-starter-test:${springBootVersion}"
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
        mavenBom "org.springframework.cloud:spring-cloud-contract-dependencies:${springCloudContractDependenciesVersion}"
        mavenBom "org.springframework.cloud:spring-cloud-sleuth:${springCloudSleuthVersion}"
    }
    dependencies {
        dependency "org.springframework.boot:spring-boot-starter-test:${springBootVersion}"
    }
}

四、gradle项目中的拉包问题

4.1:gradle项目build时下载依赖总是下不下来

4.1.1异常类型:
1、Could not findXXXX . Searched in the following locations:XXX
2、org.gradle.internal.resolve.ArtifactNotFoundException: Could not find:XXXX.jar

4.1.2解决方式:

阿里云的maven仓库中有该依赖包但是下载就下载不了。这个时候改项目中的build.gradle或者setting.gradle改变maven仓库没得用。因为安装gradle时在你的c://用户/username/.gradle/init.gradle文件是全局的gradle的配置文件,会影响所有工程项目的拉包。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值