【问题标题】:How to add class files to a Gradle source set from a standalone plugin?如何从独立插件将类文件添加到 Gradle 源集?
【发布时间】:2019-11-23 19:05:33
【问题描述】:

我正在编写一个 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))

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

【问题讨论】:

    标签: gradle gradle-plugin


    【解决方案1】:

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

    使用 Kotlin 语法:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-17
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      • 2022-06-19
      相关资源
      最近更新 更多