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差别不大
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
// }
}
}
}
网友评论