gradle基础

来源:互联网 发布:网络共享盘打不开 编辑:程序博客网 时间:2024/06/06 19:52

1、什么是gradle?

Gradle是基于JVM构建工具的新一代版本,它借鉴了现有的构建工具Ant和Maven里很多经验。像Ant和Maven这样的构建工具使用XML来定义它们的构建逻辑。XML容易读和写,但是如果逻辑很复杂,内容太多,XML就不容易维护了。gradle应用强大的Groovy语言而不是xml来编写构建脚本,同时提供了Java语法糖,它允许用很多程序员很熟悉的Java语言来编写定制逻辑。
Gradle遵循基于约定的构建方式。对于一个Java项目,gradle已经提供了默认的有意义的任务。例如,你可以编译Java源代码,运行测试和组装jar文件。每个Java项目都以一个标准的目录布局开始。它定义了在哪里可以找到源代码、资源文件和测试代码。同时,可以通过约定属性来改变它们的默认值。gradle称这个概念为约定构建。构建脚本的开发人员并不需要知道它是怎么工作的。相反,你能够完全把精力集中在什么需要配置上。gradle的约定和maven很相似,但不会让你感觉到被限制。maven非常武断,它建议一个工程只包含一个Java源代码目录且只产生一个jar文件,这对许多企业级的项目不一定合适。而ant不提供任何关于如何构建脚本方面的指导,以确保最大的灵活性。gradle则折中选择,既提供约定,又给予你改变这种约定的能力。
和其它工具的集成。gradle可以和ant、maven和ivy很好的集成。如果你是ant的使用者,gradle并不强制你完全迁移构建基础设施。相反,它允许你导入现有的构建逻辑并重用标准的ant任务。gradle和maven几ivy仓库100%兼容。你可以从中获取依赖,也可以发布代码。对已有的maven构建gradle提供一个转换器可以将maven构建逻辑转换为gradle的构建脚本。

2、开始使用gradle。

每个gradle构建都是以一个脚本开始的。gradle构建脚本默认的名字是build.gradle。如果想要实现经典的hello world例子,可以在build.gradle里定义一个独立的原子性操作task。
task  helloWorld {  doLast  {       println  'Hello world'   }}<span style="font-family: Arial, Helvetica, sans-serif;">  </span>
运行该task:
gradle  -q helloWorld
列出项目中所有可用的task:
gradle -q tasks
命令行选项 --offline:通常,构建中声明的依赖必须在离线仓库中才可以使用。如果这些依赖在本地仓库中没有,同时又运行在一个没有网络的环境下,那么构建会失败。使用这个选项可以让你在离线模式下运行构建,仅仅检查在本地缓存中依赖是否存在。
参数传递:
-D, --system-prop
gradle是在jvm进程运行的。和所有Java进程一样,可以提供一个系统参数,就像 -Dmyprop=myvalue 这样。
-P, --project-prop
可以使用这个选项直接向构建脚本中传入参数,就像 -Pmyprop=myvalue 这样。

使用插件:gradle插件通过引入特定的约定和任务来自动化执行编译Java源代码,打包生成jar文件,上传文件至代码库或自动部署等操作。例如,Java插件可以为你的项目建立一个标准的布局,并保证有意义的任务,有顺序的执行。
apply plugin: ‘java’
一行代码足够构建你的Java代码,但是gradle是怎么知道去哪里去寻找源文件呢?Java插件引入的约定之一就是源代码的位置。在默认情况下,插件回到src/main/java目录下去查找。然后你就可以构建项目了,运行build命令,应该会得到以下的输出:
gradle build:compileJava:processResources UP-TO-DATE:classess:jar:assemble:compileTestJava  UP-TO-DATE:processTestResources UP-TO-DATE:testClassess UP-TO-DATE:test:check:build
每一行输出都代表Java插件提供的一个可执行任务。UP-TO-DATE代表这个任务被跳过了,因为gradle会自动鉴别不需要执行的任务。
定义仓库:
配置和使用外部依赖,在Java世界,依赖大部分是以jar文件的形式发布和使用的。许多类库都可以在仓库中找到,仓库可以是一个文件系统或者是一个中心服务器。下面是配置对maven central 2 仓库 http://repol.maven.org/maven2访问的快捷方式:
repositories{    mavenCentral()}
定义依赖:
一个依赖是通过group标识符、名字和一个指定版本来确定的。如下:
dependencies{   compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.1'}
如何查找依赖:
在maven central里查找依赖的最直接的方式是访问: http://search.maven.org/。
包的发布:
二进制包非常适合存储在二进制仓库里,如JFrong Artifactory和Sonatype Nexus非常适合于存储二进制包JAR、WAR和ZIP,其中最出名的二进制仓库是Maven Central。在包的发布过程中一个非常重要的步骤是为这些包产生基本信息。基本信息通常以XML文件存储,能够包含足够的关于对应的包的信息。如:包的名字、版本、描述以及源代码和文档的链接等,gradle可以帮助生成这些信息。最常用的仓库是基于maven和ivy的。而发布到maven仓库主要有以下三种情况:1,位于<USER_HOME>/.m2/repository目录下的本地缓存。2、本地文件系统下的仓库。3、通过HTTP(S)可以访问的远程二进制仓库。
基于安全和稳定性考虑,企业项目不应该依赖于maven central作为主要的依赖管理源仓库。有系列内部仓库产品可以使用,如Sonatype Nexus和JFrog Artifactory。
gradle项目通过应用一个特殊的插件能够在执行assemble task的时候预配置生成一个主要的输出包。如下将jar组件发布到位于<USER_HOME>/.m2/repository的maven仓库中:
apply plugin: 'maven-publish'publishing {   publications {      plugin(MavenPublication){         from components.java         artifactId  'mycompany-plugin'      }   }}
为了想要将包发布到远程仓库下,可以选用最流行的公共仓库JFrog Binary的JCenter和Maven Central。在发布之前可以阅读它们的官方网站,注册账号,了解发布时需要提供的具体信息和格式等要求。








0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 教育网注册报名的用户名忘了怎么办 艺术生校考通过文化没过本线怎么办 想做主持人 但不是播音专业怎么办 微信登录版本最低登录不上怎么办 所录微课的视频声音小是怎么办 电脑开机黑屏只有光标在闪怎么办 联想家悦重装系统时驱动缺失怎么办 ps做到一半电脑重启了怎么办 宝宝起风疹怎么办 要注意的问题 惠普笔记本刚换的显卡又坏了怎么办 电脑装驱动时不注意点了跳过怎么办 刚抱回来的小猫不吃饭怎么办 三年级小孩字认的太少怎么办 孩子写字手出汗怎么办用什么笔壳 墙壁被小孩用彩色笔画花了怎么办 传图识字里有些字识别不了怎么办 一岁四个月宝宝智力发育迟缓怎么办 小打架受伤对方家长不配合怎么办 宝宝要上幼儿园了家长该怎么办 断奶涨奶怎么办又能防止乳房变形 孩子在幼儿园被小朋友打了怎么办 孩子在幼儿园被小朋友咬了怎么办 孩子被同学打了家长该怎么办? 孩子把同学打了打人家长该怎么办 孩子和同学发生矛盾家长该怎么办 孩子同学给孩子要东西家长该怎么办 如果遇到不讲理的孩子和家长怎么办 孩子调皮又被老师留校了怎么办 孩子拼音f和sh发音不清怎么办 自己在家生的孩子怎么办出生证明 在家念地藏经招来众生不走怎么办 家是济宁孩子上学想在济南上怎么办 高一孩子成绩严重下滑家长怎么办 商铺租客不交租金又不搬走怎么办 考试试卷找不到了明天要交怎么办 8个月宝宝不爱吃蔬菜泥怎么办 5个月的宝宝拉肚怎么办 一岁宝宝大便拉不出来怎么办 八个月宝宝便秘拉不出来怎么办 10个月宝宝大便拉水怎么办 4个月的孩子大便拉水怎么办