Gradle jlink选项会出现访问权限警告

3
使用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给出以下警告:

访问“options”超出其访问权限。无法为最终字段“options”分配值。

而对于['--strip-debug','--compress',... ]也会有一个警告:

无法为类“ListProperty”应用默认构造函数。

我不知道是什么原因导致的。这基本上是从gluon's javafx help复制粘贴过来的,尽管我的项目是多模块的。我不明白为什么会改变任何东西。Gluon脚本中的所有其他内容都可以正常工作。jlink甚至创建了一个名为“helloFX”的启动器,可以正常工作。我不知道如何检查是否有任何选项正在工作。我想它们可能没有。
1个回答

2
这似乎是在警告 jlink.options 是不可更改的,而 options == [] 的格式实际上是一个隐式构造函数。这是一个问题,因为 jlink 扩展创建时已经创建了选项。
或者,看起来是这样的,但 很可能是 IDEA 对自定义插件的 Gradle 支持中的 bug
但既然已经创建了,我们可以使用 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的风格。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接