gradle 入门介绍
gradle 简介
基于Groovy实现的自动化构建工具,比maven好的一点在于不用写复杂的xml文件。使用script就可以。
gradle 专业名词
从一个build.gradle 文件开始,build.gradle 文件就是maven中pom.xml
buildscript {
repositories {
mavenCentral()
maven {
url 'file:local_repo'
}
}
dependencies {
classpath group: 'test', name: 'build-plugin',
version: '1.0'
}
}
apply plugin: 'com.stone.build'
plugins {
id "net.saliman.cobertura" version "2.3.2"
}
subprojects { subproject ->
apply plugin: 'eclipse'
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencyManagement {
dependencies {
//common dependency
dependency "commons-io:commons-io:$COMMON_VERSION"
}
}
dependencies {
compile 'commons-io:commons-io'
compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
testCompile group: 'junit', name: 'junit', version: '4.+'
}
}
task wrapper(type: Wrapper) {
gradleVersion = '2.3'
}
buildscript
buildscript 中指定当前这个build.gradle 的执行环境。
repository 指定当需要下载依赖时查找的中心库
apply plugin 引用gradle插件,gradle有很多已有的plugin。或者你可以定制一个。查询已有的pluginhttps://plugins.gradle.org
plugins apply plugin 的简化写法,gradle 2.1 中引入的。没必要再写dependency,然后使用apply plugin 引入
subproject 定义子project的共同行为
dependencyManagement 当有多个project,各个project有一些共同的jar包依赖。在这边声明jar包的统一版本.
这边只是声明,并没有引入,需要在dependencies中引入。如果在dependencies中没有定义jar包版本,则继承dependcyManagement中的jar包版本。否则会覆盖
dependencies 工程依赖的jar包
wrapper 指定project 运行的gradle 版本。生成gradlew 可执行文件。运行./gradlew build时会去下wrapper task 中指定的gradle 版本。这样可以运行在没有安装gradle 的环境。当然如果你的环境中已经安装了gradle,而且可以运行project.可以直接使用gradle build命令。
gradle 常见命令
gradle buildEnvironment 查看build script 块中定义的dependencies
gradle -q dependencies $subprojectname:dependencies
列出subproject 的包依赖
gradle plugin开发
gradle 支持自定义plugin。开发很简单。实现Plugin 即可。
https://github.com/davenkin/gradle-learning/tree/master/10-custom-plugin
这边主要介绍另外一种,将task与project 解耦的方法。
定义task
继承DefaultTask,然后在@TaskAction 方法中定义Task执行的具体任务
package davenkin
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction
class ShowTimeTask extends DefaultTask {
@TaskAction
def showTimeTask(){
println "Current time is " + new Date().format(project.dateAndTime.timeFormat)
}
}
向project中注入task
plugin实现Plugin,然后通过project.task注入。
package davenkin
import org.gradle.api.Plugin
import org.gradle.api.Project
import davenkin.ShowTimeTask
import davenkin.ShowDateTask
class DateAndTimePlugin implements Plugin<Project> {
void apply(Project project) {
project.extensions.create("dateAndTime", DateAndTimePluginExtension)
project.task('showTime', type: ShowTimeTask);
project.task('showDate', type: ShowDateTask);
}
}
plugin publish
artifactory {
clientConfig.setIncludeEnvVars(true)
contextUrl = 'http://localhost:8081/artifactory/'
publish {
repository {
repoKey = 'libs-release-local'
username = "admin"
password = "password"
}
}
}
publishing {
publications {
mavenJar(MavenPublication) { from components.java }
}
}
artifactoryPublish { publications('mavenJar') }
如果artifactory中没有自定义publications。在artifactory中也可以指定默认的publish内容。
gradle issues
Q1: gradle设置多个repo,不生效,只会找最上面的一个repo
A1: 将多个url分开写。将mavenCentral()放在最上面
mavenCentral()
maven { url }
maven { url ‘file:local_repo’}
参考
https://plugins.gradle.org
https://docs.gradle.org/current/userguide/custom_plugins.html
https://plugins.gradle.org/plugin/net.saliman.cobertura
http://buransky.com/scala/publish-jar-artifact-using-gradle-to-artifactory/
gradle 入门介绍的更多相关文章
- AndroidStudio下gradle的入门介绍与使用
參考: 网易云加密:http://apk.aq.163.com 网易云捕:http://crash.163.com 1 Groovy Groovy 是没有类型的 Java 代码 ,语法更简洁.形式有点 ...
- Android CoordinatorLayout 入门介绍
Android CoordinatorLayout 入门介绍 CoordinatorLayout View 知道如何表现 在 2015 年的 I/O 开发者大会上,Google 介绍了一个新的 And ...
- gradle入门
gradle入门 简介: Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于 ...
- 项目自动化建构工具gradle 入门5——在intellij中做一个gradle的web工程
之前的几个小节,都是纯手工建文件夹,纯手工拷贝war包,或者纯手工解压个zip看看结果,,,,这还是我写了玩的helloWorld.若是玩大工程.几十个人的团队协同开发时,这么玩,,,,暴躁的程序员估 ...
- 项目自动化建构工具gradle 入门4——javaWeb在浏览器中显示helloWorld
在java应用中,其实做的最多的还是java web应用.所以现在我们做的就是用gradle构建一个简单的web项目,简单点,直接上代码吧. 1.进入目录D:\work\gradle\web,新建文件 ...
- 项目自动化建构工具gradle 入门3——生一个exe的helloWorld
前两次呢,我们能够用一个外部的jar 来实现输出helloWorld.但问题是我每次都要用java -jar 来执行,这样我们自己玩还可以,让用户玩就不好了.所以我们生成一个exe给他们吧.这次我们仍 ...
- 项目自动化建构工具gradle 入门2——log4j输出helloWorld
上一章节呢,有一个能跑的程序了.但是对做工程的人来说,用日志输出感觉比用System.out要有档次一点.比如使用log4j.直接上例子: 1进入D:\work\gradle\log目录 ,您电脑没 ...
- C# BackgroundWorker组件学习入门介绍
C# BackgroundWorker组件学习入门介绍 一个程序中需要进行大量的运算,并且需要在运算过程中支持用户一定的交互,为了获得更好的用户体验,使用BackgroundWorker来完成这一功能 ...
- 初识Hadoop入门介绍
初识hadoop入门介绍 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. < ...
随机推荐
- Eclipse代码块折叠插件,安装使用
在代码编写中经常会遇到一些很长的set(xxx)的代码,非常影响体验. 而Eclipse的folding插件可以自定义的将代码块进行折叠. 效果如下图所示: 可以根据代码块的功能来进行折叠,从而保证代 ...
- nginx 安装及简单配置(适用 小白)
一.nginxNginx是一个异步框架的 Web服务器,也可以用作反向代理,负载平衡器 和 HTTP缓存,Nginx可以部署在网络上使用FastCGI脚本.SCGI处理程序.WSGI应用服务器或Phu ...
- js高阶函数应用—函数柯里化和反柯里化(二)
第上一篇文章中我们介绍了函数柯里化,顺带提到了偏函数,接下来我们继续话题,进入今天的主题-函数的反柯里化. 在上一篇文章中柯里化函数你可能需要去敲许多代码,理解很多代码逻辑,不过这一节我们讨论的反科里 ...
- 实验吧_登陆一下好吗(骚注入)&你真的会PHP吗?(代码审计)
登陆一下好吗 首先看到两个输入框,分别对应账号密码,随手输个admin,admin进去,提交后发现有回显,既然题目说了过滤了一切,那就先看看过滤了些啥 经过一波测试,发现服务器过滤了union,sel ...
- Discuz!另一处SSRF无须登陆无须条件
漏洞来源:http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0151179.html 看看poc:http://phpstudy.com/Discuz_ ...
- Redis常用命令--Hashes
Hash是由键值对组成的map.Hashes的底层是通过字典实现的.一个哈希表里面可以有多个哈希表节点.而每个哈希节点就保存了字典中的一个键值对. 字典是一种用于保存键和值对的抽象数据结构.字典里的每 ...
- Multipath在OpenStack中的faulty device的成因及解决(part 2)
| 版权:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.如有问题,可以邮件:wangxu198709@gmail.com 简介 在上次的文章M ...
- [ZJOI 2015]幻想乡战略游戏
Description 傲娇少女幽香正在玩一个非常有趣的战略类游戏,本来这个游戏的地图其实还不算太大,幽香还能管得过来,但是不知道为什么现在的网游厂商把游戏的地图越做越大,以至于幽香一眼根本看不过来, ...
- [HNOI2013]数列
题目描述 小T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨.股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N.在疯涨的K天中小T观察到:除第一天外每天的股价都比前一天高,且高出 ...
- 搭积木(block)
[问题描述]小 OY 是一个喜欢搭积木的孩子,他有一天决定向小 C 展示他特别的搭积木技巧.现在一条直线上从左到右有 n 个位置,标号 1..n,第 i 个位置坐标为 x_i.每个位置上都预先叠好了一 ...