我正在尝试制作一个类似于 Lombok 的注释处理器,但我遇到的问题是所有使用我的处理器作为库的项目都需要 jvm 参数来导出/打开内部 JVM 库。如何在没有任何其他项目需要的情况下使用内部 API?
我已经尝试过
现在,任何使用我的库的项目都需要在其 build.gradle 中包含以下内容。
compileJava {
options.fork = true
options.forkOptions.jvmArgs += [
'--add-exports', 'jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED',
'--add-exports', 'jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED',
'--add-exports', 'jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED',
'--add-exports', 'jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED',
'--add-exports', 'jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED',
'--add-exports', 'jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED',
'--add-exports', 'jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED',
'--add-exports', 'jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED',
'--add-exports', 'jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED'
]
}
为此,您需要对内部 API 进行一些修改,并调用在提供参数以打开 API 时调用的函数。如果有人想要一个如何执行此操作的示例,请参见here