Gradle 将哪些文件打包到 jar 存档中?

问题描述

哪个表达式(在 build.gradle 文件中)评估为认打包到 jar 存档中的文件列表(不调整“jar”任务?

我无法在 org.gradle.jvm.tasks.Jarorg.gradle.api.tasks.bundling.Jar 的来源中轻易发现它。

这个问题的动机是使用未添加到 jar 存档中的自定义 sourceSet 文件

解决方法

添加 jar 任务并对其进行配置的是 Java 插件。您可以在 org.gradle.api.plugins.JavaPlugin 类的源代码中看到这一点:

private TaskProvider<Jar> registerJarTaskFor(Project project,JavaPluginConvention pluginConvention) {
    return project.getTasks().register(JAR_TASK_NAME,Jar.class,jar -> {
        jar.setDescription("Assembles a jar archive containing the main classes.");
        jar.setGroup(BasePlugin.BUILD_GROUP);
        jar.from(mainSourceSetOf(pluginConvention).getOutput());
    });
}

https://github.com/gradle/gradle/blob/e343cfe2b37317a3de119da2809887f76042fe0d/subprojects/plugins/src/main/java/org/gradle/api/plugins/JavaPlugin.java#L315-L321