0
点赞
收藏
分享

微信扫一扫

[原创window篇]gradle 重新从0开始

花明 2022-11-25 阅读 133


开篇说明

  • 随意介绍一些技巧,可能比较乱
  • 不是根据官方文档顺序来的,不根据死板套路把暂时没有用到的列出来
  • 先感受成就感,如果直接发一堆东西 可以去官网
  • 在项目中最基本的需求就是文件复制啥的,用批处理就太落伍了。

linux操作方式雷同,这里不再进行说明

构建环境

下载

或者访问这里下载​​https://gradle.org/releases/​​

在线升级现有的gradle

gradlew wrapper --gradle-version=4.10.2




[原创window篇]gradle 重新从0开始_python


image.png


配置gradle命令

第一步解压下载 gradle zip包或者直接从用户目录.gradle下选择一个版本的bin目录(包含gradle文件)添加到环境变量。

初始化一个gradle项目

mkdir hellogradle
cd hellogradle
gradle init

初始化的目录结构



[原创window篇]gradle 重新从0开始_python_02


image.png

不是所有window电脑都能输入

​ls​​​的,这个自行百度,我自己都忘记了,我是通过啥搞的, ​​xshell​​?

从上图可以看出来,这些文件夹结构和android studio工程没有多大的区别,当前这里没有扯模块化,而是先从执行一个任务开始.
*其实写gradle任务有两种方式还有一种是kotlin,我个人感觉 kotlin太难用,还没有动态这个好使,那个定义一个任务都得弄成字符串,效率降低了。

编写任务

build1.gradle

task mytask1( description: "这是我的任务") {
group="build1任务"
print "[build 1 my task execute]"

doLast {


print "【mytask 1内部执行】"
}
}
task mytask2( description: "这是我的任务") {
group="build1任务"
print "[build 2 my task 1execute]"
doLast {


print "【mytask 2内部执行】"
}

}

build.gradle

group = "qssqgroup"
version = "1.0"
//apply([plugin: "build1.gradle"])
apply from: "build1.gradle"
task thistask() {
group = "build0任务"
print "[this is task build.gradle]"

doLast {

print "this task 的具体业务逻辑逻辑执行 。"
}
}

task执行

通过执行 ​​gradle thistask​​​或者​​gradle :thistask​​都可以执行这个task,

发现的问题

如果被执行的task找到,但是类型是复制或者其他,则执行的效果是把所有的任务扫描代码块执行一遍,怎么形容呢,也就是 都会被执行,但是​​doLast​​​里面的具体不会执行。
上面的代码是没有天上​​​Type:Copy​​之类的如果有的话,执行是这样的结果:



[原创window篇]gradle 重新从0开始_gradle_03


image.png


如果没有类型指定的时候执行 ​​gradle mytask2​​呢



[原创window篇]gradle 重新从0开始_java_04


image.png


从上图可以发现,区别是 多了Task:mytask2的执行, 也就是 task分为两种时机一种是扫描一种是真正被执行的时候所执行的内容。

定义任务名称和注释

写法:在task里面加上​​group=​

比如

task mytask2( description: "这是我的任务") {
group="build1任务"
print "[build 2 my task 1execute]"
doLast {


print "【mytask 2内部执行】"
}

}

在开发工具里面是如何显示的呢



[原创window篇]gradle 重新从0开始_linux_05


image.png


命令行查看信息

​gradle help --task mytask2​



[原创window篇]gradle 重新从0开始_gradle_06


image.png


从上可以从上图看出 ,类型默认就是org.gradle.api.Task,另外 执行的路径是 ​​:mytask2​​​所以可以通过 ​​gradle :mytask2​​执行,另外 描述信息也出现了。

详细日志执行指定任务

​gradle -d mytask2​



[原创window篇]gradle 重新从0开始_gradle_07


image.png


调试指定任务

通过工具右键任务就可以实现,但是我目前发现断点无效,不知道啥原因,但是测试非​​apply from:​​的gradle是可以调试的,调试方法:



[原创window篇]gradle 重新从0开始_linux_08


image.png


遍历文件任务

task listfilestask() {
group = "文件操作"
doLast {
fileTree("src/main/java").forEach {
def value = it.getAbsolutePath()
print "遍历了${value} \n"
}
}
}

这种高阶写法有点奇怪,其中​​it​​不可见,但是可以这样写,开发工具能够提示出来。



[原创window篇]gradle 重新从0开始_java_09


image.png


文件压缩

task compress(type:Zip,group:"压缩",description:"压缩源文件"){
from "src"
setArchiveName "2222src.zip"

}

需要注意的是开发工具的提示有点不对劲,​​setArchiveName​​​可能没法提示出来,
从这个例子也看出来了,设置group也可以通过在方法参数里面这样写,当然,这可能不叫参数,只是一种语法而已。
执行后结果



[原创window篇]gradle 重新从0开始_python_10


image.png


学习更多

​​https://guides.gradle.org/creating-new-gradle-builds/#analyze_and_debug_your_build​​​​https://github.com/gradle/gradle/tree/master/subprojects/docs/src/samples​​

举报

相关推荐

0 条评论