Gradle jlink 选项给出访问权限警告

Gradle jlink options gives access rights warning

使用Gradle,这是jlink很常用的脚本:

plugins {
    id 'application'
    id "org.beryx.jlink" version "2.16.3"
}

jlink {
    options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']
    launcher {
        name = 'helloFX'
    }
}

出于我不知道的原因,IntelliJ 总是向我发出 options 的警告:

Access to 'options' exceeds its access rights. Cannot assign a value to final field 'options'.

还有 ['--strip-debug', '--compress', ... ] 的警告:

Cannot apply default constructor for class 'ListProperty'.

我不知道是什么原因造成的。这几乎是来自 gluon's javafx help 的复制粘贴,尽管我的项目是多模块的。我不明白为什么这会改变任何事情。 gluon 脚本中的其他所有内容都可以正常工作。 jlink 甚至创建了一个名为 'helloFX' 的启动器。我不知道如何检查是否有任何选项有效。我想他们不是。

这好像是警告说jlink.options是final的,options == []格式其实是隐式构造函数。这是一个问题,因为在创建 jlink 扩展时已经创建了选项。

或者,似乎是这样,但是it is probably a bug in IDEA's Gradle support for custom plugins

但是,既然已经创建了,我们可以使用 setter 作为解决方法吗?

options.set([ '--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages' ])

这似乎可以删除 IDE 中的警告。还有一个 addOptions 方法公开了,所以我们也可以这样做:

addOptions('--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages')

后者的便利性似乎与 options.addAll() 相同,但有一些健全性检查。对我来说,似乎更 Groovy.