Lombok 如何使用内部 API,而不需要最终用户导出它们?

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

我正在尝试制作一个类似于 Lombok 的注释处理器,但我遇到的问题是所有使用我的处理器作为库的项目都需要 jvm 参数来导出/打开内部 JVM 库。如何在没有任何其他项目需要的情况下使用内部 API?

我已经尝试过

  1. 使用tools.jar而不是添加jvm导出
  2. 尝试打开库而不是导出它们
  3. 只是尝试了一些随机的事情来尝试让它工作

现在,任何使用我的库的项目都需要在其 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'
    ]
}
java gradle lombok sun
1个回答
0
投票

为此,您需要对内部 API 进行一些修改,并调用在提供参数以打开 API 时调用的函数。如果有人想要一个如何执行此操作的示例,请参见here

© www.soinside.com 2019 - 2024. All rights reserved.