Gradle项目问题补充记录

欢迎并感谢浏览卢小龙的本篇文章

你好!亲爱的读者,本篇文章将主要记录本人在工作学习中接触Gradle项目的问题记录,后续每次遇到问题会进行补充,方便自己的学习历程记录以及复习参考,若有言错之处,请各位给予指点.

1.Gradle配置菜单显示不全问题

在这里插入图片描述

问题描述:
Gradle配置菜单显示不全,无法对Gradle路径配置从而进行项目加载。

解决方法:
在这里插入图片描述
选中 .gradle 文件,右键选择 Import Gradle project按钮,但此按钮受限于IDEA版本问题。
还有一种方法是选择菜单栏的File->Open,在打开的窗口选择对应Gradle项目的build.gradle文件,然后点击OK。

2.IDEA使用Gradle Tasks的各种按钮

2.1 Gradle查看依赖关系

分两种方式,一种是通过Tasks菜单鼠标点击,如下图所示:
在这里插入图片描述
另一种是通过命令方式

./gradlew 模块名:dependencies

这个命令会打印出该模块下的所有第三方类库的依赖情况,有多种展示情况,complie编译时的,Runtime运行时(打到APK包时)的,debug下,release下。

如下展示的是debugCompileClasspath即debug编译时的引包情况:

debugCompileClasspath - Resolved configuration for compilation for variant: debug
+--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.2.31
|    \--- org.jetbrains.kotlin:kotlin-stdlib:1.2.31
|         \--- org.jetbrains:annotations:13.0
+--- com.android.support:appcompat-v7:27.1.1
|    +--- com.android.support:support-annotations:27.1.1
|    +--- com.android.support:support-core-utils:27.1.1
|    |    +--- com.android.support:support-annotations:27.1.1
|    |    \--- com.android.support:support-compat:27.1.1
|    |         +--- com.android.support:support-annotations:27.1.1
|    |         \--- android.arch.lifecycle:runtime:1.1.0
|    |              +--- android.arch.lifecycle:common:1.1.0
|    |              \--- android.arch.core:common:1.1.0
|    +--- com.android.support:support-fragment:27.1.1
|    |    +--- com.android.support:support-compat:27.1.1 (*)
|    |    +--- com.android.support:support-core-ui:27.1.1
|    |    |    +--- com.android.support:support-annotations:27.1.1
|    |    |    +--- com.android.support:support-compat:27.1.1 (*)
|    |    |    \--- com.android.support:support-core-utils:27.1.1 (*)
|    |    +--- com.android.support:support-core-utils:27.1.1 (*)
|    |    +--- com.android.support:support-annotations:27.1.1
|    |    +--- android.arch.lifecycle:livedata-core:1.1.0
|    |    |    +--- android.arch.lifecycle:common:1.1.0
|    |    |    +--- android.arch.core:common:1.1.0
|    |    |    \--- android.arch.core:runtime:1.1.0
|    |    |         \--- android.arch.core:common:1.1.0
|    |    \--- android.arch.lifecycle:viewmodel:1.1.0
|    +--- com.android.support:support-vector-drawable:27.1.1
|    |    +--- com.android.support:support-annotations:27.1.1
|    |    \--- com.android.support:support-compat:27.1.1 (*)
|    \--- com.android.support:animated-vector-drawable:27.1.1
|         +--- com.android.support:support-vector-drawable:27.1.1 (*)
|         \--- com.android.support:support-core-ui:27.1.1 (*)
\--- com.android.support.constraint:constraint-layout:1.0.2
     \--- com.android.support.constraint:constraint-layout-solver:1.0.2

分层展示,不仅展示了该模块下每个类库的名称、版本号,还展示了各类库里所需依赖的类库。

目前笔者主要使用过的只有build.clean及build.jar,目前感觉与maven的clean和install结果性质大差不差,这方面后续会继续跟进了解,附上详解链接。

https://www.cnblogs.com/huansky/p/12064630.html

3.Gradle依赖管理问题

Gradle是基于Groovy的特定领域语言来声明项目设置,而不是传统的 XML。不过实话讲,截止到目前,笔者还是比较青睐Maven的XML管理依赖的形式。

3.1 apply字段

首先说一下在 .gradle 文件中常见的 apply 字段,在根目录的build.gradle文件中添加内容(apply from:”config.gradle”),如图:

apply from: "config.gradle"

bulidscript{
	repositories{
		jcenter()
	}
}

加上这一行代码,意思就是该项目下所有的module都可以从这个(config.gradle)配置文件里读取内容。

3.2 定义依赖仓库(repositories)

Gradle 要求至少定义一个依赖仓库,依赖仓库可以是文件系统,也可以是中心服务器。最常用的是 jcenter 和 mavenCentral。

apply plugin: 'config.gradle'

repositories{
	mavenCentral()
	jcenter()
}

3.3 申明依赖(dependencies)

和 Maven 类似,依赖的坐标直接为:group、name、version。此外,引入不同的插件会引入不同的依赖配置类别。

dependencies{
	compile group: 'org.apache.commons', name: 'commons-langs3', version: '3.8.1'
}

依赖坐标可以简写(用 : 分隔),如下所示:

‘org.apache.commons:commons-lang3:3.8.1’

当执行 build 命令时,gradle 就会去配置的依赖仓库中下载对应的 Jar,并应用到项目中。

3.4 项目的依赖类型

  • 外部模块依赖:刚才的外部仓库
  • 项目依赖:一个项目依赖另一个项目。如:compile project(’:projectB’)。
  • 文件依赖:依赖本地文件,此类比较特殊,如下所示:
dependencies{
	localLib fileTree(dir: "${System.properties['Gradle.User.Home']}/libs/cargo", include: '*.jar')
	//localLib 为本地依赖的名字,include 指定包含哪些文件
}

在 dependency 前面可指明其依赖类型,可选(和 Maven 的 scope 标签类似)。Java 插件提供了 6 种现成的类型:

  • compile:编译过程中必须依赖的类库
  • runtime:运行时必须(编译时不需要)
  • testCompile:编译测试时需要
  • testRuntime:运行测试时需要
  • archives:如果项目在编译过程中,有 jar 文件生成,则包含

3.5 将依赖打包进 jar

// build.gradle 中
dependencies {
    compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.1'
//    archives "org.apache.commons:commons-lang3:3.1"
}

jar {
    from {
        configurations.compile.collect {
            it.isDirectory() ? it : zipTree(it)
        }
    }
    manifest {
        attributes 'Main-Class': 'com.rainsia.hello.HelloWorld'
    }
}

3.6 Gradle排除依赖

compile('org.hibernate:hibernate:3.1') {

 // 冲突时优先使用该版本
 force = true

 // 依据构建名称排除
 exclude module: 'oktokeep'

 // 依据组织名称排除
 exclude group: 'org.test'

 // 依据组织名称+构件名称排除
 exclude group: 'org.test', module: 'oktokeep'

 // 为本依赖关闭依赖传递特性
 transitive = false
}

---------待补充---------

后续笔者遇到问题会继续补充更新,若大家有遇到Gradle其他的棘手问题,欢迎大家予以分享。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A请叫我卢老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值