博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
gradle 入门介绍
阅读量:4956 次
发布时间:2019-06-12

本文共 3380 字,大约阅读时间需要 11 分钟。

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。或者你可以定制一个。查询已有的plugin

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 即可。

这边主要介绍另外一种,将task与project 解耦的方法。

定义task

继承DefaultTask,然后在@TaskAction 方法中定义Task执行的具体任务

package davenkinimport org.gradle.api.Pluginimport org.gradle.api.Projectimport org.gradle.api.DefaultTaskimport org.gradle.api.tasks.TaskActionclass ShowTimeTask extends DefaultTask {    @TaskAction    def showTimeTask(){        println "Current time is " + new Date().format(project.dateAndTime.timeFormat)    }}

向project中注入task

plugin实现Plugin,然后通过project.task注入。

package davenkinimport org.gradle.api.Pluginimport org.gradle.api.Projectimport davenkin.ShowTimeTaskimport davenkin.ShowDateTaskclass DateAndTimePlugin implements Plugin
{ 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://www.cnblogs.com/stoneFang/p/6715293.html

你可能感兴趣的文章
tomcat简介与部署
查看>>
golang常用的http请求操作
查看>>
python单例模式的五种实现方式
查看>>
VS2017+QT5.12环境配置与动态链接库的生成
查看>>
CSS——div内文字的溢出部分用省略号显示
查看>>
Python调用DLL动态链接库——ctypes使用
查看>>
js中不同类型作比较
查看>>
《目标:OKR与KPI漫谈》
查看>>
数据IO
查看>>
最后一次作业-----课程总结
查看>>
用java代码写的简易计算器(可以实现基本的加减乘除功能)
查看>>
18.04ubuntu安装mysql,同时设置root密码
查看>>
ubutun18.04 安装redis
查看>>
远程ubuntu18.04 安装java1.8
查看>>
ubutun 18.04 安装maven
查看>>
ubutun18.04安装 rocketmq
查看>>
git clone
查看>>
处理版本冲突
查看>>
jackson 实体转json 为NULL或者为空不参加序列化
查看>>
bloom过滤器
查看>>