我知道这已经得到了回答,但是由于答案很旧(当前的 Gradle 版本是几个较新的主要版本 - 6.2.2)并且该线程在搜索引擎中的出现率很高,因此我将发布对我有用的解决方案。
一般来说,我的问题与原始帖子中所述的问题相似/相同:我想从所有子项目中获取类并将它们压缩到一个 jar 中(最好尽可能使用最默认的设置)。最后我发现下面的代码可以解决问题:
jar {
from subprojects.sourceSets.main.output
}
但是,虽然它可以正确构建 jar,但我还希望能够将这个 jar 作为单个工件发布到 Maven 存储库,这取决于所有子项目所做的一切。为了实现这一点,主项目必须依赖于子项目的依赖关系,这是通过以下方式完成的:
subprojects.each { evaluationDependsOn(it.path) }
dependencies {
api(externalSubprojectsDependencies('api'))
implementation(externalSubprojectsDependencies('implementation'))
}
private externalSubprojectsDependencies(String configuration) {
subprojects.collect { it.configurations[configuration].allDependencies }.flatten()
.findAll { !it.properties['dependencyProject'] } // this looks like hack, I'd love to see better solution
}
仅复制外部依赖项- 我们不希望列出内部(项目)依赖项,pom.xml
因为它们的所有类都在 jar 中。