0. 为什么需要buildSrc
在Gralle管理的项目中,为了区分构建所需的类和业务类,最好分开管理这些代码,这也是Gradle所建议的:[Use buildSrc
to abstract imperative logic]
1. 具体创建过程
1.1 创建一个空项目
image.png1.2 创建buildSrc
- 同级与build.gradle
-
创建完成后重新构建
image.png
1.3 修改buildSrc下的build.gradle
- 如果buildSrc下没有build.gradle,你可以自己新建一个
- 使用 'groovy' 插件
完整build.gradle脚本:
plugins {
id 'groovy'
id 'java'
}
group 'com.gradle'
version '0.0.1-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.codehaus.groovy:groovy-all:2.5.8'
testImplementation group: 'junit', name: 'junit', version: '4.12'
}
1.4 新建src/main/groovy
事实上如果你用intellij上面的步骤完成后重新构建,你点击新建文件夹intellij会自动弹出src/main/groovy的选项你直接选定即可,创建完成后,项目会是介锅样子
image.png
2 测试
- 写一个自己的Task类
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction
class MyTask extends DefaultTask{
MyTask() {
this.description = "test buildSrc"
}
@TaskAction
void start() {
println 'bi bo bi bo... ...'
}
}
- 再定义一个task在主工程下的build.gradle
task doTestBuildSrc(type: MyTask) {
doLast {
println "I'm the task"
}
}
- 执行
//gradlew doTestBuildSrc --warning-mode all
> Task :doTestBuildSrc
bi bo bi bo... ...
I'm the task
3 要注意的点
- 其实buildSrc被gradle同样视为一个module,但是你别傻傻的直接新建一个名叫buildSrc的module,因为自gradle 6 以后,buildSrc模块名已经被reserve
- 如果你还使用 compile 或者 testCompile 最好换用 implementation 和 testImplementation 因为 gradle 7 后会弃用这两个API
网友评论