一、目录
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、Groovy、Kotlin和Scala,计划未来将支持更多的语言。
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 构建多模块
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命令了。如下图: