如何以java.io.File对象的形式获取构建任务后构建的jar文件?

问题描述 投票:0回答:1

我正在尝试使用名称

buildAndPost
扩展构建任务,在构建完成后, 将文件复制到所需的目的地并连接到服务器,触发重新加载机制,自动重新加载已安装的插件(它也是一个插件)。
到目前为止,我已经完成了所有代码,但有一件事阻止了我。
也就是说,我正在使用
build.gradle
中的以下 groovy 代码访问 jar 文件:

task buildAndPost{
    dependsOn build
    
    doLast{
        File builtFile = tasks.jar.archiveFile.get(); // <----- Here is the problem -----
        PostBuildAction action = new PostBuildAction(builtFile, $serverDir);
    }
}

为了使我的部分代码能够工作,我在构建脚本的最下面纯粹用 java 编写了, 它需要以 Java File 对象的形式执行

build
任务后构建的文件,即
java.io.File

但是

tasks.jar.archiveFile.get()
行从 groovy 或 gradle api 返回一个我目前不知道的对象。
使用 groovy 不是我的强项(至少这部分为这个 java 的超集添加了更多内容),而且我几乎不理解它。

如何将该文件作为 Java 的文件或

java.io.File
对象获取?

java file gradle groovy
1个回答
0
投票

这并不是 Groovy 的问题,而是通过查看文档解决的。

Java 插件创建的任务

jar
类型为
Jar
。您可以在 Gradle 发布的 Javadoc 中查阅
Jar
的 API
,其中显示
Jar
有一个 getter 方法
getArchiveFile()
,它返回一个
Provider<RegularFile>
。 (这是您在 Groovy 中通过其
 字段访问表示法 
访问属性 archiveFile 时调用的方法。)

反过来,

RegularFile
有一个方法
getAsFile()
,它返回底层的
File
对象。

因此,要获得

File
,您可以致电:

tasks.jar.archiveFile.get().getAsFile()

或者事实上

tasks.jar.archiveFile.get().asFile

也可以在 Groovy 中使用,同样使用缩写语法来调用 Java getter。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.