【问题标题】:How can I add sourceset to jar file?如何将源集添加到 jar 文件?
【发布时间】:2013-09-28 11:07:41
【问题描述】:

我已经定义了自定义源集,但 gradle build 不包含它的源到 jar 文件 + gradle idea 没有将 srcDir 标记为 Sources
如何正确配置 gradle?

这是一个例子:

sourceSets {
main {
    java {
        srcDir 'src'
    }
}

api {
    java {
        srcDir 'api'
    }
}
}

在这种情况下,gradle build 将仅构建 main 源集(来自 src 目录的类)并跳过 api 源集。 gradle idea 的类似问题 - 只有 src 目录将被标记为 Sources

【问题讨论】:

    标签: build intellij-idea gradle


    【解决方案1】:

    终于在 8 年后我得到了正确答案。

    // Let's the default resource generation depend on your sourset's resource generation.
    processResources.dependsOn( processApiResources )
    
    // Inherit the standard configuraton. You need to change this is want to have a different configuration for this sources.
    configurations {
        apiCompile.extendsFrom mainCompile
        apiRuntime.extendsFrom mainRuntime
    }
    
    jar {
        // Add directories with generated sources (might be several - one for every supported language).
        from sourceSets.api.output.classesDirs
        // Add output directories of the sourceset's resources.
        from sourceSets.api.output.resourcesDir
    }
    

    【讨论】:

    • 对我来说,jar { from sourceSets.api.output } 就足够了。
    【解决方案2】:

    通常,如果您还想将其输出分开,您只会声明一个单独的源集。否则,您可以将另一个源目录添加到“主”源集:

    sourceSets {
        main {
            java {
                srcDir "src"
                srcDir "api"
            }
        }
    }
    

    这也会将“api”标记为 IDEA 中的源目录。

    【讨论】:

    • 假设我真的需要单独的源集。这种情况我该怎么办?
    • 相应地配置jar 任务和idea.module 扩展。详情见Gradle Build Language Reference
    猜你喜欢
    • 2011-10-26
    • 2011-09-26
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 2016-12-05
    相关资源
    最近更新 更多