如何在Gradle构建任务后获取java.io.File类型的构建产物Jar文件
如何在Gradle构建任务后获取java.io.File类型的构建产物Jar文件
嗨,我完全懂你现在的困扰——Gradle的archiveFile返回的是它自己的RegularFile类型(Gradle API里的文件抽象),不是咱们熟悉的Java原生java.io.File,尤其是你习惯用Java编写代码,刚接触Groovy和Gradle的话,确实容易卡在这里。
别担心,有两种简单直接的方式可以把它转换成你需要的File对象:
方法一:Groovy友好的属性访问写法
Gradle的RegularFile对象提供了asFile属性,直接访问就能拿到java.io.File:
File builtFile = tasks.jar.archiveFile.get().asFile
这种写法很符合Groovy的简洁风格,一步到位。
方法二:更偏向Java风格的方法调用
如果你更习惯Java的语法,也可以用getAsFile()方法,效果完全一样:
File builtFile = tasks.jar.archiveFile.get().getAsFile()
把你的任务代码修改后,应该是这样的:
task buildAndPost{ dependsOn build doLast{ File builtFile = tasks.jar.archiveFile.get().asFile; // 这里替换成转换后的代码 PostBuildAction action = new PostBuildAction(builtFile, serverDir); // 别忘了调用Action里的执行逻辑哦,比如action.run()或者你定义的执行方法,不然代码不会实际运行 } }
顺便提一句,Gradle用自己的文件抽象类型是为了更好地支持跨平台和灵活的文件操作,但它们都预留了和Java原生File的转换方式,以后遇到类似的文件类型转换都可以用类似的思路解决~
备注:内容来源于stack exchange,提问作者LakshyaK2011
相关产品推荐
相关产品推荐

