Build 如何将sourceset添加到jar文件?

Build 如何将sourceset添加到jar文件?,build,intellij-idea,gradle,Build,Intellij Idea,Gradle,我已经定义了自定义源代码集,但是gradle build没有将其源代码包含到jar文件中+gradle idea没有将srcDir标记为sources 如何正确配置gradle 以下是一个例子: sourceSets { main { java { srcDir 'src' } } api { java { srcDir 'api' } } } 在这种情况下,gradle build将只生成main源集(来自src目录的类),并

我已经定义了自定义源代码集,但是
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
dir将标记为
Sources

通常,如果您还希望保持其输出独立,您只会声明一个独立的源集。否则,您只需将另一个源目录添加到“主”源集中:

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

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

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
任务和
idea.module
扩展。有关详细信息,请参阅。已经7年了,还没有人回答这个问题。