gradle笔记
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笔记的更多相关文章
- Gradle笔记——构建基础
本篇文章主要介绍一下Gradle的构建基础. 它看起来似乎和android项目没多大关系.不能让人一下子理解android项目中的Gradle配置文件,可是这篇基础真的非常重要. 学习Gradle前, ...
- Gradle笔记——依赖管理基础
1. 什么是依赖管理 依赖管理可以分为两部分:一是依赖,即项目构建或运行时所需要的一些文件:二是发布,即构建完成后上传到某个地方. 1.1 依赖 大部分的项目都需要第三方库类或项目文件,这些文件就是项 ...
- Gradle 笔记——Java构建入门
Gradle是一个通用的构建工具,通过它的构建脚本你可以构建任何你想要实现的东西,不过前提是你需要先写好构建脚本的代码.而大部分的项目,它们的构建流程基本是一样的,我们不必为每一个工程都编写它的构建代 ...
- Gradle笔记系列(二)
1.使用Gradle命令行 在这篇博客中,我们将简要介绍Gradle命令行的使用. 1.1 执行多任务 通过在命令行列出每个任务(task),你可以在一次构建(build)中执行多个任务.例如,命令g ...
- Gradle笔记系列(一)
1.Gradle概述 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的 ...
- Gradle笔记——Gradle的简介与安装
本博客对Gradle进行一个简单的介绍,以及它的安装. Gradle介绍 Gradle是一个基于JVM的构建工具,它提供了: 像Ant一样,通用灵活的构建工具 可以切换的,基于约定的构建框架 强大的多 ...
- Gradle 笔记
网上有一篇文章说的很明白,图文来教你在eclipse下用gradle 来打包Androidhttp://blog.csdn.net/x605940745/article/details/4124268 ...
- Gradle笔记——关于Gradle 1.12
到目前为止,Gradle已经出到2.1版本了,从1.12这个版本开始看,主要是因为我使用Gradle是Android开发所需要.公司里面是采用Android Studio来进行Android项目的开发 ...
- 【项目构建工具】 Gradle笔记2
一.Gradle执行流程 1.Gradle的执行流程(生命周期)主要是三个阶段: 初始化阶段:解析整个工程中所有Project,构建所有的Project对应的project对象 配置阶段:解析所有的p ...
随机推荐
- elasticsearch 嵌套对象之嵌套类型
nested类型是一种特殊的对象object数据类型(specialised version of the object datatype ),允许对象数组彼此独立地进行索引和查询. 1. 对象数组如 ...
- Redis-HA
Redis-HA部署 链接:https://pan.baidu.com/s/1cj5H9snQXqWaC0od1mUuig 提取码:jdqf 复制这段内容后打开百度网盘手机App,操作更方便哦 1. ...
- C++中static的作用
tatic关键字有俩作用:(1).控制存储分配:(2).控制一个名字的可见性和连接. 随着C++名字空间的引入,我们有了更好的,更灵活的方法来控制一个大项目的名字增长. 在类的内部使用st ...
- 403 ,502 到正确的nginx 配置
配置完一定要reboot ,之前我一直用的 ./nginx -s reload ,这次我不知道为啥不行... 再没有reboot 之前一直在用的旧的配置.所以一直在报403forbbdin. rebo ...
- Goldengate 部署oracle10g在 rac asm环境,完整教程
前言 Goldengate再rac 环境部署,和单机部署区别还是有点大,主要存在环境上. 环境 oracle10g ,sid=rac 准备工作 1.在rac节点,配置监听动态注册,确保goldenga ...
- OpenCV常用基本处理函数(4)简单变换,阈值等
几何变换 缩放 img=cv2.imread('messi5.jpg') # 下面的 None 本应该是输出图像的尺寸,但是因为后边我们设置了缩放因子 # 因此这里为 None res=cv2.res ...
- MySQL-几种关联
左表t1: DROP TABLE IF EXISTS t1; )); ,'t1a'); ,'t1b'); ,'t1c'); ,'t1d'); ,'t1f'); 右表 t2: DROP TABLE IF ...
- Windows10 通用快捷键命令
总想着甩掉鼠标,来一种只用键盘的各种行云流水般的快捷操作,在网上各个论坛,博客,搜索引擎,最后终于记录整理了出来! 为了尝试新的命令提示符下,只需 打开开始菜单,然后键入cmd并回车. 按Ct ...
- 转载:有好多是Elastic官方博客上的内容,具体看文档
Elastic官方博客地址:https://blog.csdn.net/UbuntuTouch 这个地址是在CSDN上面的,看不惯CSDN网站的广告,同时官方博客讲述的也都十分详细,自己保留一份作为参 ...
- MariaDB PHP语法
MariaDB与各种编程语言和框架(如PHP,C#,JavaScript,Ruby on Rails,Django等)合作良好. PHP仍然是所有可用语言中最受欢迎的语言,因为它的简单性和历史足迹. ...