gradle - 如何从独立插件将类文件添加到 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 插件的输出)。
推荐阅读
- typescript - 如何设置 TypeScript、VScode、Yarn2、Fastify 项目
- c# - 为 Blazor 网站的每个页面使用多种解决方案
- python - 如何在csv中选择一个随机单元格
- excel - 具有变量名称的 Excel 结构化引用
- swift - 只有纵向模式不适用于 iPad / Xcode / SwiftUI
- java - 是否需要索引具有唯一约束的列?
- angular - *ngFor 中的角度翻译
- python - 将列表转换为字典的最快方法,列表值作为键,列表索引作为值
- laravel - Laravel 7 whereIn 查询只返回第一个索引
- r - 使用 df1 的两列中的值从 df2 中获取值,并将它们用作索引。与 Excel 中的 index(match(),match()) 方法相同