gradle的build.gradle详解

hackernew
发布于 2021-2-23 09:32
浏览
0收藏

一个项目中只放置一个build.gradle,build.gradle可以理解为一个Project框架,提供了对一个项目的基本配置。

project的常用:

 

属性:

 

  1. group
  2. name(artifact)
  3. version 项目版本(全局的)
  4. sourceCompatibility = 1.8                     // source使用的jdk版本 
  5. targetCompatibility = 1.8                     // 编译时使用的jdk版本或者更新的java虚拟机兼容
  6. compileJava.options.encoding = 'UTF-8'        
  7. compileTestJava.options.encoding = 'UTF-8'   


方法: 

 

  1. apply 应用插件
  2. dependencies 添加依赖
  3. repositories 添加仓库
  4. task 定义任务
  5. buildscript
  6. allprojects
  7. subprojects
  8. configurations

 

gradle中的repositories

//repositories是project一个方法,闭包作为参数
repositories {
    mavenCentral()
}

 

这个是用来指定使用什么库的,它可以存在buildScript块、allprojects块、根级别块。

buildScript块的repositories主要是为了Gradle脚本自身的执行,获取脚本依赖插件。

根级别的repositories主要是为了当前项目提供所需依赖包,比如log4j、spring-core等依赖包可从mavenCentral仓库获得。

allprojects块的repositories用于多项目构建,为所有项目提供共同所需依赖包。而子项目可以配置自己的repositories以获取自己独需的依赖包。

 

gradle中的常用属性可以写在gradle.properties中


一个gradle文件中的属性有很多,比如 jdk版本,编码类型,dependency 版本。如果都放在 build.gradle 中势必不好管理哦(经验哦),那么gradle默认提供了一个 gradle.properties 文件。用这个文件来管理所有的属性在合适不过了

 

Gradle 插件(Plugins)


Gradle 也可以用下面的方式声明使用的插件:

// build.gradle
plugins {
    id 'com.example.plugin', version '1.0'
}

 

其实是从 Gradle 官方的插件仓库 https://plugins.gradle.org/m2/ 下载的。

但是,众所周知的原因,某些地区会连不上,导致下载不到需要的插件,例如出现如下错误:

* What went wrong:
A problem occurred configuring root project 'MyApp'.
> Could not resolve all files for configuration ':classpath'.
   > Could not download jimfs.jar (com.google.jimfs:jimfs:1.1)
      > Could not get resource 'https://plugins.gradle.org/m2/com/google/jimfs/jimfs/1.1/jimfs-1.1.jar'.
         > Could not HEAD 'https://plugins.gradle.org/m2/com/google/jimfs/jimfs/1.1/jimfs-1.1.jar'.
            > Connect to d29vzk4ow07wi7.cloudfront.net:443 [d29vzk4ow07wi7.cloudfront.net/54.192.84.6, d29vzk4ow07wi7.cloudfront.net/54.192.84.168, d29vzk4ow07wi7.cloudfront.net/54.192.84.128, d29vzk4ow07wi7.cloudfront.net/54.192.84.173] failed: Read timed out

 

又或者,插件是不对外的,存在某个私有仓库的,该如何修改或者添加额外的私有仓库地址呢?

直接修改 settings.gradle 来添加其它仓库:

 

// settings.gradle
pluginManagement {
    repositories {
        maven {
            url 'http://examle.com/maven-repo'
        }
        gradlePluginPortal()
    }
}

 

当然你也可以使用老的方式应用插件:

 

buildscript {
    repositories {
        maven {
            url 'http://examle.com/maven-repo'
        }
    }
    dependencies {
        classpath 'com.example.plugin:gradle-plugin:1.0'
    }
}
 
apply plugin: 'com.example.plugin'

 

dependencies


例如根目录依赖配置单项目项目依赖:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

 

多项目构建


settings.gradle作用就是用于多项目构建,一般像这样:

rootProject.name = 'ant'
include 'framework-eureka'
include 'framework-gateway'
 
include 'module-common'
include 'module-test'
 
 

 


 

 

分类
标签
已于2021-2-23 09:32:03修改
收藏
回复
举报
回复
    相关推荐