gradle--- 01gradle 常用知识学习

一、目录

   1、gradle 认知和简介

   2、gradle 配置仓库

   3、gradle 构建 jar

   4、自定义 Java 源代码布局 

   5、插件使用 参考w3c

   6、gradle 构建多模块

   7、 解决gradle 冲突

  8、统一版本号控制

  9、idea 使用 gradle 一些常见报错

  10、使用gradle 解决中文乱码、解决Idea 中gradle编译 war 包编码不对

  11、单个项目 build.gradle

 

 

 

1、gradle 认知和简介

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。

面向Java应用为主。当前其支持的语言限于Java、GroovyKotlinScala,计划未来将支持更多的语言。

Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。

 

2、gradle 配置仓库

a、配置本地仓库

build.gradle

repositories {
    //本地库
     mavenLocal()
}

b、使用 Maven 中央仓库

build.gradle

repositories {
    mavenCentral()
}

c、在build.gradle文件中添加国内镜像 使用国内镜像下载速度快点

build.gradle

repositories { maven{ url'http://maven.aliyun.com/nexus/content/groups/public/'} }

d、本地仓库--> 公司私有仓库--> 阿里云仓库

阿里云仓库参考:https://maven.aliyun.com/mvn/guide

// 聚会项目仓库
allProjects {
  repositories {
    maven {
      url 'https://maven.aliyun.com/repository/public/'
    }
    maven {
      // 如果想使用其它代理仓,以使用spring仓为例
      url 'https://maven.aliyun.com/repository/spring/'
    }
    //本地仓库 
    mavenLocal()
   // 阿里云 
    mavenCentral()
  }
}

 4、插件使用 参考w3c

参考:https://www.w3cschool.cn/gradle/5vdr1hug.html

自定义 Java 源代码布局

build.gradle

sourceSets {
    main {
        java {
            srcDir 'src/java'
        }
        resources {
            srcDir 'src/resources'
        }
    }
}  

5、war\java插件使用 参考w3c

参考:https://www.w3cschool.cn/gradle/5vdr1hug.html

 

6、 gradle 构建多模块

可以参考:https://blog.youkuaiyun.com/yue530tomtom/article/details/79383070?utm_medium=distribute.pc_relevant.none-task-blog-searchFromBaidu-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-searchFromBaidu-3.control

a、修改顶层父目录:settings.gradle

rootProject.name = 'springboot-gradle'
include ':gradleFirst', ':gradleSecond'
// 或者
include 'gradleFirst' 
include 'gradleSecond'

b、修改gradleMain目录里的buid.gradle


// 所有子项目的通用配置
subprojects {
    apply plugin: 'java'
    // JVM 版本号要求
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    // java编译的时候缺省状态下会因为中文字符而失败
    [compileJava,compileTestJava,javadoc]*.options*.encoding = 'UTF-8'

    //定义版本号
    ext {

    }

    repositories {
        mavenCentral()
    }

    jar {
        manifest {
            attributes("Implementation-Title": "Gradle")
        }
    }

    configurations {
        // 所有需要忽略的包定义在此
        all*.exclude group: 'commons-httpclient'
        all*.exclude group: 'commons-logging'
        all*.exclude group: 'commons-beanutils', module: 'commons-beanutils'
    }

    dependencies {
        // 所有子项目通用依赖的jar

        // 测试依赖
        testCompile(
           "junit:junit:4.12"
        )
    }
}

c、子模块之间有相互依赖的关系的 dependencies 语法 (比如:secondModule 依赖第一个模板:firstModule)

dependencies {
    compile(
        project(':firstModule'),
    )

    testCompile(
        project(':firstModule').sourceSets.test.output,
    )
}

 

7、 解决gradle 冲突

build.gradle 配置 有冲突 build 不通过; 并且使用 force 指定一个版本即可(一般不用手动处理 冲突 gradle 默认会给你依赖 最新的版本)

configurations.all {
   resolutionStrategy {
       // 开启有冲突build不通过 
       failOnVersionConflict()
       force 'org.hamcrest:hamcrest-core:1.3'
   }
}

8、统一版本号控制

之前我们在gradle中引入依赖如下所示:

dependencies {

    compile group: 'org.springframework', name: 'spring-webmvc', version: '5.1.14.RELEASE'
    compile group: 'org.springframework', name: 'spring-context', version: '5.1.14.RELEASE'

    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.13.0'
    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.13.0'

    testCompile group: 'junit', name: 'junit', version: '4.12'
}

这种方式,当引入依赖过多,要更改版本号的时候就需要一个个去找,下面用ext创建键值对来存放版本号,需要改版本的时候改ext里的值就行了。

ext{

    springMVCVersion        = '5.1.14.RELEASE'
    springContextVersion    = '5.1.14.RELEASE'
    log4jVersion            = '2.13.0'
    junitVersion			= '4.12'
}

dependencies {

    compile group: 'org.springframework', name: 'spring-webmvc', version: springMVCVersion
    compile group: 'org.springframework', name: 'spring-context', version: springContextVersion

    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: log4jVersion
    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: log4jVersion

    testCompile group: 'junit', name: 'junit', version: junitVersion
}

9、idea 使用 gradle 一些常见报错

1、解决IDEA gradle项目执行main方法时自动运行gradle task问题 出现报错问题

解决方法:
打开设置页面,进行如下修改:

 

 

10、使用gradle 解决中文乱码

tasks.withType(JavaCompile) { 

    options.encoding = "UTF-8" 

} 

看了一下官方文档的说明,对于Gradle来说编码这个属性默认情况下是null,也就是Gradle会根据你操作系统的版本来选择编码。Windows中文操作系统的编码正是GBK。所以才会出现这个错误。这一点上,Windows做的确实不如Linux。Linux把编码全部选择为UTF-8,万事大吉,以后就不需要操心编码问题了。

上面这个解决办法虽然有效,但是对于每个Gradle项目都需要插入这么一段,很麻烦。还有一种办法可以一劳永逸的指定编码,那就是使用环境变量。在Windows下,新建GRADLE_OPTS环境变量,值为-Dfile.encoding=utf-然后新开一个终端窗口再次使用gradle命令,就会发现这下Gradle已经可以正确识别编码了。

idea 设置编码

例如在IDEA中,需要打开File->Other Settings->Default Settings->Gradle,在Gradle Vm Options中设置-Dfile.encoding=utf-8。这样IDEA中的Gradle也可以正确执行Gradle命令了。如下图:

 

 


 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值