1、idea的tools工具菜单默认安装有groovy插件groovy console,用它写几个测试脚本
import org.assertj.core.util.Lists
/*groovy 兼容Java*/
def testList= Lists.newArrayList("456", "789")
testList.add('123')
System.out.println(testList)
/*并有一些自己的特性*/
def testList2= ["456", "789"]
testList2 << '123'
println testList2
/*支持断言*/
assert testList2.size()==3
println testList2.getClass()
/*定义闭包 */
def myclosure={
e->println e
}
/*自定义方法,入参-闭包,注意不要导入其它第三方包的Closure*/
def mymethod(Closure closure){
closure("jwolf")
}
/*调用方法-入参闭包*/
mymethod(myclosure)
/*也可以这样,不预先声明闭包*/
mymethod{
e->println e+'2'
}
2、build.gradle构建脚本解读
/*该脚本默认都有一个gradle包里的Project实例*/
/*调用plugins方法,入参为闭包,闭包内调用id方法,等价于id('java')*/
plugins {
id 'java'
id 'war'
}
/*调用set方法为Project实例的如下变量赋值*/
group 'com.jwolf'
version '1.0-SNAPSHOT'
/*调用set方法为其它对象变量赋值*/
sourceCompatibility = 1.8
/*调用repositories方法,入参为闭包,闭包内调用mavenCentral()这个无参方法,注意顺序优先本地仓库其次公司私服、阿里云私服等*/
repositories {
mavenLocal()
maven{
url 'http://maven.aliyun.com/nexus/content/groups/public'
}
mavenCentral()
}
/*调用dependencies,入参为闭包,闭包内调用testCompile方法,方法入参为object[],group:'junit' 类似spring的注解@Value("${group:junit}")*/
dependencies {
compile (group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'){
/*排除传递性依赖*/
exclude group: 'org.slf4j', module: 'slf4j-api'
}
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.22'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
configurations.all{
resolutionStrategy{
/*有冲突时报错?*/
failOnVersionConflict()
/*强制使用指定版本*/
force group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
}
}
3、如下版本冲突时:默认使用最新版本jar,可以配置冲突时构建失败,强制版本,排除传递依赖等策略,参考上方配置
4、在构建脚本里增加一个自定义task
其它:构建生命周期,构建初始化阶段、配置阶段、执行阶段都有钩子方法