如何从独立插件将类文件添加到 Gradle 源代码集?



我正在编写一个 Gradle 插件,我需要告诉 Java 插件我的插件也创建类文件(来自 wasm,这是 Java 编译器无法做到的(。

我已将类文件放在$buildDir/classes/wasm/main.

我需要将此目录中的类放在由 jar 任务创建的结果 jar 中。

我可以轻松地在build.gradle文件中执行此操作:

sourceSets {
    main {
        resources {
            srcDirs "src/main/resources", "build/classes/wasm/main"
        }
    }
}

但是我需要从插件代码中执行此操作,以便用户无需在每个构建文件上复制它。

任何想法如何实现?

一个小细节:通过将这个目录作为 Java 项目的依赖项,我使类文件对 Java 代码可见(因此 IDE 也可以看到生成的类(:

project.dependencies.add("implementation", project.files(compileWasm.outputDir))

不确定这是否是最好的方法,以及这两个问题是否真的相关。

我已经找到了一种方法来做与我在构建文件中所做的相同的事情......

使用 Kotlin 语法:

val sourceSet = project.extensions.getByType(SourceSetContainer::class.java)
sourceSet.getByName("main").resources.srcDir(compileWasm.outputDir)

这解决了问题,但我非常想知道我这样做的方式是否如您在这种情况下所期望的那样(即用更多类"丰富"Java 插件的输出(。

最新更新