基本语法

作者: 肖散 | 来源:发表于2020-03-02 15:53 被阅读0次

Groovy学习笔记

网址


1 基本语法

1.1 定义以 def开头 当然也可以用基本Java类型 (int,char...)

同时也有list,数组,map等类型

def name
def map=[:]  //这里定义了相当于一个map
map.key=value

1.2 单引号字符串是java.lang.String类型的,不支持站位符插值操作

def name = 'Test Groovy!'
def body = 'Test $name'

assert name == 'Test Groovy!'
assert body == 'Test $name'     //不会替换$name站位符

1.3 双引号字符串支持站位插值操作

{}或者来标示,$只对A.B有效

def name = 'Guillaume' // a plain string
def greeting = "Hello ${name}"
assert greeting.toString() == 'Hello Guillaume'


2 闭包

{ [closureParameters -> ] statements }

//[closureparameters -> ]是可选的逗号分隔的参数列表,参数类似于方法的参数列表,这些参数可以是类型化或非类型化的。

//最基本的闭包
{ item++ }                                          
//使用->将参数与代码分离
{ -> item++ }                                       
//使用隐含参数it(后面有介绍)
{ println it }                                      
//使用明确的参数it替代
{ it -> println it }                                
//使用显示的名为参数
{ name -> println name }                            
//接受两个参数的闭包
{ String x, int y ->                                
    println "hey ${x} the value is ${y}"
}
//包含一个参数多个语句的闭包
{ reader ->                                         
    def line = reader.readLine()
    line.trim()
}

一个闭包其实就是一个groovy.lang.Closure类型的实例

3.其他

总体而言和java差别不大

API

4.应用

4.1 上传mave

不需要在任何的闭包下

afterEvaluate { project ->
    uploadArchives {
        repositories {
            mavenDeployer {
                pom.groupId = 'com.xxx.xxx'   //包名设置
                pom.artifactId = 'VrSettingsPlugin'  //ID
                pom.version = SETTINGS_PLUGIN_VERSION  //版本  很重要
                pom.withXml {
                    asNode().appendNode('description', LAST_UPDATES)   // 描述
                }
                def releaseUrl = "http://10.10.13.182:11111/nexus/content/repositories/ros/"  // maven地址
                repository(url: releaseUrl) {
                    authentication(userName: USER_NAME, password: PASSWORD)  //用户名,密码
                }
            }
        }
    }
}

每次上传需要修改 pom.version和 description

注意: pom.version 一定每次都要更改,如果不更改,即使服务端更改了包,本地是更新不到的。
由于maven校验版本号未更改就直接用了缓存的包,不会去更新新的包,除非删除C盘中的缓存目录
例如Androidx的缓存地址如下:

C:\Users\Administrator\.gradle\caches\transforms-2\files-2.1\374780ad9ee71331aa230422e745793e\jars

4.2 修改打包后名称

这个是在android 闭包下面的.ps:这些闭包就是

apply plugin: 'com.android.application'
    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            //def outputFile = output.outputFile
            if ("true".equals(IS_JENKINS)) {

                def fileName = "XXXX.${variant.buildType.name}-${variant.productFlavors[0].name}-v${defaultConfig.versionCode}-${defaultConfig.versionName}-${releaseTime()}.apk"
                outputFileName = fileName
            } else if (variant.buildType.zipAlignEnabled) {

                def fileName = "XXXX${variant.buildType.name}-${variant.productFlavors[0].name}-v${defaultConfig.versionCode}-${defaultConfig.versionName}-${releaseTime()}.apk"
                outputFileName = fileName
                // }
            }

        }
    }

相关文章

网友评论

    本文标题:基本语法

    本文链接:https://www.haomeiwen.com/subject/jvlvkhtx.html