首页 > 解决方案 > 如何从独立插件将类文件添加到 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))

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

标签: gradlegradle-plugin

解决方案


我找到了一种方法来做和我在构建文件中做的一样的事情......

使用 Kotlin 语法:

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

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


推荐阅读