Gradle使用

最近刚开始接触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 ""
            }
        }
    }
}

好了,暂时到此结束。以后再补充吧,,,

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值