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

标签 gradle intellij-idea java-module jlink

使用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 总是给我这个选项的警告:

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。

关于Gradle jlink 选项给出访问权限警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58843258/

相关文章:

java - Android Studio 中针对 Dependent Spinner 的 Gradle 构建错误

Gradle - StopExecutionException 不会改变 TaskStatus

intellij-idea - 如何在 IntelliJ 中安装插件?

java - 带有模块的 Java 11 Gradle

java - Java 9 中创建了多少个未命名的模块?

java - 如何列出所有 JPMS 服务?

java - 从 Spring security 3 升级到 Spring security 4 后出现异常?

android - 如何从Android项目获取R.java

eclipse - 使用Gradle插件而不添加到build.gradle吗?

java - 使用IntelliJ结构搜索将字段及其表达式替换为新字段