最近刚开始接触Gradle这个构建工具,简单总理了一些关于Gradle的知识,主要记录他的使用方法。
很早之前,项目构建的原始时代主要通过以下4个步骤,开发打包发布一个项目:
1.依赖管理:把jar把放在lib目录
2.测试:简单的main函数测试,或者能不写就不写。
3.打包:通过Eclipse打包
4.上传:通过FTP上传到服务器。
而后构建工具诞生,使得这一过程有所简化,使得软件开发人员的开发效率明显提升。构建工具主要功能:依赖管理、测试、打包、发布,总之,机器能干的事情,自己不用再动手。其发展过程经历了三个阶段:
Ant(编译、测试、打包) =》 Maven(依赖管理、发布) =》 Gradle(Groovy,集前面两种工具之大成)。
Ant和Maven在此就不做细讲,Gradle,一个开源的构建工具,其安装过程超级简单,自行百度,就两个步骤:下载解压,配置环境变量。
Gradle的构建脚本是基于Groovy语言编写的,这种语言结合了Java,Python等当下比较流行的语言的特点,他是基于JVM的语言。总结有如下特点:
1.Groovy完全兼容Java语法
2.分号是可选的
3.类、方法默认是public的
4.自动给属性添加getter和setter方法
5.弱类型的编程语言
6.==等同于equals
7.字符串有三种,单引号,双引号,三引号。
def version = 1
def s1 = 'vip'
def s2 = "gradle version is ${version}"
def s3 = ''' Hello
world'''
双引号的字符串可以插值,三引号的可以换行。 Groovy这里就不再展开细讲,下面介绍Gradle的使用。
Gradle的使用主要就是要理解”构建脚本“
脚本中几个关键词
apply:应用插件;dependencies:任务依赖;repositories:仓库;task:项目中的任务
task中的主要方法:dependsOn:任务依赖;doFirst/doLast:在任务列表中的最前面和最后面添加一个动作。
自定义一个任务
def createrDir = {
path->
File dir = new File(path);
if(!dir.exists()){
dir.mkdirs();
}
}
task makeJavaDir(){
def paths = ['src/main/java','src/main/resources','src/test/java']
doFirst{
paths.forEach(createDir);
}
}
这个任务执行后会创建 'src/main/java','src/main/resources','src/test/java' 这几个目录。
task makeWebDir(){
dependsOn 'makeJavaDir'
def paths = ['src/mian/webapp','src/test/webapp']
doLast{
paths.forEach(createDir)
}
}
这个任务通过dependsOn依赖前面那个任务。
下面再来说说Grade的另外一个重要功能:jar包依赖管理
工件坐标:group,name,version
常用仓库:mavenLocal/mavenCentral/jcenter; 自定义的仓库
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
这段代码就表示测试代码编译阶段依赖的jar包。把testCompile改成testRun就表示测试代码运行时依赖的jar包。
dependencies {
compile 'ch.qos.logback:logback-classic:1.2.1'
}
依赖logback日志记录的jar包,jar包来源于仓库,仓库的配置如下:
repositories {
maven{
url '私服地址。。。'
}
mavenLocal() //本地仓库
mavenCentral()
}
企业项目中,往往会把项目模块化,这就要用到多项目的构建。
allprojects {
apply plugin: 'java'
sourceCompatibility = 1.8
}
subprojects {
repositories {
mavenCentral()
}
dependencies {
compile 'ch.qos.logback:logback-classic:1.2.1'
}
}
allprojects/subprojects通过这两个闭包可以实现多项目的构建配置。
然后最后,,,就是我们的发布功能了!
发布到本地/远程仓库:
allprojects {
apply plugin: 'java'
sourceCompatibility = 1.8
apply plugin: 'maven-publish'
publishing{
publications{
myPublish(MavenPublication){
from components.java
}
}
repositories {
maven{
name "myRepo"
url ""
}
}
}
}
好了,暂时到此结束。以后再补充吧,,,