5-gradle续解

本文最后更新于:2 个月前

gradle依赖管理

接下来我们将通过一个小小的爬虫示例来示范如何通过gradle依赖管理进行开发,我们需要的准备工作如下

  • 使用http-client3.1进行 爬取
  • 下载所有的图片
  • 图片地址为:下载地址

有了gradle依赖管理后,我们不需要在进行每个jar包的配置,只需要找的http-client的依赖就可以

问题:plugins:application报错,解决方法,重新新建工程,在建工程时必须勾选kotlin和java两个才能够自动导入application的模块,否则会报错

plugins{
    application
}

问题:kotlin(“jvm”)报错,解决方法kotlin必须指定版本,例如像下面的方法一样

kotlin("jvm")version("1.5.10")

那我们开始编写下载程序

fun main(args:Array<String>){
    var client = HttoClient()
   	var method = GetMethod("url")
    client.excecuteMethod(method)
    var responseBody  = method.getResponseBody()
    method.rleaseConnection()
    var file = File("1.jpg")
    file.writeBytes(responseBody)
}

gradle报错

Execution failed for task ':run'.
Process 'command 'C:\Users\tanzicai\.jdks\azul-1.8.0_302\bin\java.exe'' finished with non-zero exit value 1
* Try:
  Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

解决方法:

点击左边的strackde右键rerun ‘projectName’.run可以看到详细的报错信息

image-20210930195008917

> Task :run FAILED
错误: 找不到或无法加载主类  MainKt

这个错误是没有在这个文件中找到主函数,所以我们在Main.kt文件中写入主函数main就行

所以我们写入主函数就ok

fun main(args:Array<String>){
    var client = HttoClient()
   	var method = GetMethod("url")
    client.excecuteMethod(method)
    var responseBody  = method.getResponseBody()
    method.rleaseConnection()
    var file = File("1.jpg")
    file.writeBytes(responseBody)
}

依赖管理冲突

Boss: 我需要AB来干活

A:我需要1.0的版本C

B:我需要1.2的版本C

那Boss该去C的1.0还是1.2的版本呢?

这个就叫做冲突管理

我们可以使用exclude()关键字来剔除不需要的jar包

implementation("org.apache.httpcomponents","httpclient","4.5.2"){
		exclude("commons-loging","commons-loging")
}

5-gradle续解
https://tanzicai.github.io/2021/09/30/5-gradle续解/
作者
Zicai Tan
发布于
2021年9月30日
更新于
2022年12月20日
许可协议