gradle笔记

一、基础知识

1.1、groovy语言

Groovy适用于Java虚拟机的一种敏捷的动态语言,他是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言,使用该语言不必编写过多的代码,同时又具有闭包和动态语言的其他特性。

1.2、与java的区别

1.2.1 、编译器属性自动添加getter和setter方法

1.2.2 、属性可以直接用点号获取

1.2.3 、 最后一个表达式的值会作为返回值

1.2.4 、==等同于equals(),不会有NullPointerExceptions

1.3、groovy的特性

1.3.1、assert语句
assert  version == 2

1.3.2、可选类型定义(弱类型)

def  version = 1
1.3.3、可选的括号(括号可写可不写)
println(version)

println version
1.3.4、字符串
def  s1 = 'string'      //单引号 ,纯粹是一个字符串

def  s2 = "gradle  version is  ${version}"  //可以插入变量

def  s3 = '''My  name

		    is gradle'''      //支持换行
1.3.5、集合API
	//list

	def	buildTools = ['ant','maven']

	buildTools << 'gradle'

	assert	buildTools.getClass() == ArrayList

	assert	buildTools.size() == 3

	//map

	def	buildYears = ['ant':2000,'maven':2004]

	buildYears.gradle=2009

	println  buildYears.ant

	println	buildYears['gradle']

	println	buildYears.getClass()     //LinkedHashMap
1.3.6、闭包
def	c1 = {

		v  ->   

				print	v

	}

	def	c2 = {

		print	'hello'

	}

	def	method1(Closure	closure){

		closure('param')

	}

	def	method2(Closure	closure){

		closure()

	}

	method1(c1);

	method2(c2);

二、使用gradle创建项目

2.1、使用Idea创建一个新的gradle项目

第一步:new Project

第二步:输入GroupId和ArtifactId

第三步:选择本地gradle和jdk版本

2.2、项目中build.gradle

plugins {
id 'java' //添加java插件
id 'war' //添加war插件 可打包为war包
} //添加插件的另外一种写法
// apply plugin:'java' group 'com.gradle'
version '1.0-SNAPSHOT' sourceCompatibility = 1.8 //指定jdk版本 //依赖仓库
repositories {
mavenCentral() //中央仓库
} //依赖
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}

IDEA编译gradle项目在右侧栏目里面

编译完成的jar包在build包的lib下面

三、构建脚本

3.1构件块

Gradle构建中的两个基本概念是项目(project)和任务(task),每个构建至少包含一个项目,项目中包含一个或多个任务。在多项目构建中,一个项目可以依赖于其他项目;类似的,任务可以形成一个依赖关系图来确保他们的执行顺序。

3.2 项目(project)

一个项目代表一个正在构建的组件(比如一个jar文件),当构建启动后,Gradle会基于build.gradle实例化一个org.gradle.api.Project类,并且能够通过project变量使其隐式使用

项目属性:

1、group、name、version 。三个唯一确定一个项目

2、apply、dependencies、repositories、task

3、 属性的其他配置方式:ext、gradle.properties

3.3、任务

任务对应org.gradle.spi.task。主要包括任务动作和任务依赖。任务动作定义了一个最小的工作单元。可以定义依赖其他任务、动作序列和执行条件

任务方法:

1、dependsOn

2、doFirst、doLast <<

3.4、自定义任务

//创建闭包
def createDir = {
path ->
File file = new File(path);
if(!file.exists()){
file.mkdirs();
}
} task makeJavaDir(){
def paths = ['src/main/java','src/main/resources','src/test/java','src/test/resources'];
doFirst{
paths.forEach(createDir);
}
} task makeWebDir(){
dependsOn 'makeJavaDir'
def paths = ['src/main/webapp','src/test/webapp']
doLast{
paths.forEach(createDir);
}
}

四、依赖管理

4.1、依赖阶段配置

  • compile、runtime
  • testCompile、testRuntime

4.2、依赖阶段关系

4.3、依赖仓库

repositories {
//多个仓库时按照顺序来寻找依赖
mavenLocal() //本地maven仓库
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'} //私服仓库
mavenCentral() //远程仓库
}

4.4、解决版本冲突

  • 发现版本冲突构建失败

    configurations.all {
    resolutionStrategy{
    failOnVersionConflict()
    }
    }
  • 去除相应的依赖

    dependencies {
    compile (group:'',name:'',version:''){
    exclude group:'',module:'' //在相应的依赖中去除这个依赖
    }
    testCompile group: 'junit', name: 'junit', version: '4.12'
    }
  • 强制使用某一个版本

    configurations.all {
    resolutionStrategy{
    failOnVersionConflict()
    force("junit:junit:4.13") //强制指定一个版本
    }
    }

五、多项目构建

5.1、在根模块中的settings.gradle中添加

include '模块名'  //添加所有的子模块

5.2、一个模块依赖于另外一个模块

dependencies {
compile project(:模块名) //添加需要的依赖模块名
testCompile group: 'junit', name: 'junit', version: '4.12'
}

5.3、所有项目统一配置

//在根项目中配置统一配置
allprojects {
sourceCompatibility = 1.8
} //为所有子项目添加统一配置
subprojects { }

5.4、统一配置 group和version

在根项目添加gradle.properties,在里面添加group和version;

六、发布

//添加maven发布插件
apply plugin 'maven-publish' publishing{
publications{
//定义一个发布任务,可以添加多个
myPublish(MavenPublication){
from components.java
}
}
repositories {
maven{
name 'myRepo'
url ''
}
}
}

gradle笔记的更多相关文章

  1. Gradle笔记——构建基础

    本篇文章主要介绍一下Gradle的构建基础. 它看起来似乎和android项目没多大关系.不能让人一下子理解android项目中的Gradle配置文件,可是这篇基础真的非常重要. 学习Gradle前, ...

  2. Gradle笔记——依赖管理基础

    1. 什么是依赖管理 依赖管理可以分为两部分:一是依赖,即项目构建或运行时所需要的一些文件:二是发布,即构建完成后上传到某个地方. 1.1 依赖 大部分的项目都需要第三方库类或项目文件,这些文件就是项 ...

  3. Gradle 笔记——Java构建入门

    Gradle是一个通用的构建工具,通过它的构建脚本你可以构建任何你想要实现的东西,不过前提是你需要先写好构建脚本的代码.而大部分的项目,它们的构建流程基本是一样的,我们不必为每一个工程都编写它的构建代 ...

  4. Gradle笔记系列(二)

    1.使用Gradle命令行 在这篇博客中,我们将简要介绍Gradle命令行的使用. 1.1 执行多任务 通过在命令行列出每个任务(task),你可以在一次构建(build)中执行多个任务.例如,命令g ...

  5. Gradle笔记系列(一)

    1.Gradle概述 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的 ...

  6. Gradle笔记——Gradle的简介与安装

    本博客对Gradle进行一个简单的介绍,以及它的安装. Gradle介绍 Gradle是一个基于JVM的构建工具,它提供了: 像Ant一样,通用灵活的构建工具 可以切换的,基于约定的构建框架 强大的多 ...

  7. Gradle 笔记

    网上有一篇文章说的很明白,图文来教你在eclipse下用gradle 来打包Androidhttp://blog.csdn.net/x605940745/article/details/4124268 ...

  8. Gradle笔记——关于Gradle 1.12

    到目前为止,Gradle已经出到2.1版本了,从1.12这个版本开始看,主要是因为我使用Gradle是Android开发所需要.公司里面是采用Android Studio来进行Android项目的开发 ...

  9. 【项目构建工具】 Gradle笔记2

    一.Gradle执行流程 1.Gradle的执行流程(生命周期)主要是三个阶段: 初始化阶段:解析整个工程中所有Project,构建所有的Project对应的project对象 配置阶段:解析所有的p ...

随机推荐

  1. services - Internet 网络服务列表

    DESCRIPTION(描述) services 是一个普通的 ASCII 码文件, 它在 internet 服务的友好原文名以及这些服务预先分配的端口和协议类型之间提供了映射. 每个联网程序必须查找 ...

  2. 图解SSH原理_20190613

    SSH仅仅是一协议标准,其具体的实现有很多,既有开源实现的OpenSSH,也有商业实现方案.使用范围最广泛的当然是开源实现OpenSSH. 2. SSH工作原理 在讨论SSH的原理和使用前,我们需要分 ...

  3. SSD算法的实现

    本文目的:介绍一个超赞的项目--用Keras来实现SSD算法. 本文目录: 0 前言 1 如何训练SSD模型 2 如何评估SSD模型 3 如何微调SSD模型 4 其他注意点 0 前言 我在学习完SSD ...

  4. 微信支持的Authorization code授权模式(公众号开发)(开放平台资料中心中的代公众号发起网页授权)

    链接:https://blog.csdn.net/ASZJBGD/article/details/82838356 主要流程分为两步: 1.获取code 2.通过code换取accesstoken 流 ...

  5. 【网络】Vmware虚拟机下三种网络模式配置

    VMware虚拟机有三种网络模式,分别是Bridged(桥接模式).NAT(网络地址转换模式).Host-only(主机模式). VMware workstation安装好之后会多出两个网络连接,分别 ...

  6. php str_shuffle()函数 语法

    php str_shuffle()函数 语法 str_shuffle()函数怎么用? php str_shuffle()函数用于随机的打乱字符串中所有字符,语法是str_shuffle(string) ...

  7. AcWing 209. 装备购买 (高斯消元线性空间)打卡

    脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量z[i]=(ai,1,ai,2,..,ai,m)z[i]=(ai,1,ai,2,..,ai,m) 表示,每个装备需要 ...

  8. 分布式系统理论基础1: 一致性、2PC和3PC

    本文转自 https://www.cnblogs.com/bangerlee/p/5268485.html 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到 ...

  9. 20175223 《Java程序设计》第十一周学习总结

    目录 教材学习内容总结 代码调试中的问题和解决过程 1. Linux中编程实现计算器方法乘法报错,但 IDEA 中可以. [代码托管] 学习进度条 参考资料 目录 教材学习内容总结 因未熟练掌握第十章 ...

  10. Hive 时间操作函数(转)

    1.日期函数UNIX时间戳转日期函数: from_unixtime 语法:   from_unixtime(bigint unixtime[, string format]) 返回值: string ...