如何解决配置继承和解析
我在gradle上遇到了一些麻烦,我不知道为什么这不起作用:
项目A和2个子项目B和C
B和C具有名为masterConfiguration
和superConfiguration
(扩展了masterConfiguration)的配置
我在两者中都添加了一些依赖项。
当我这样做时:
configurations.superConfigurations.resolvedConfiguration.files
一切正常,我拥有superConfiguration
和masterConfiguration
中的所有文件。
现在是问题。
我在项目A(rootProject)中创建一个配置(projectAConfiguration)。
此配置从B和C扩展superConfiguration
。
我没有在此添加任何新的依赖项。
如果我这样做:
configurations.projectAConfiguration.resolvedConfiguration.files
我一无所有。我不明白为什么?
settings.gradle =>
include 'B'
include 'C'
build.gradle =>
configurations {
projectAConfiguration
}
def rootConfiguration = configurations.projectAConfiguration
subprojects {
configurations {
masterConfiguration
superConfiguration {
extendsFrom masterConfiguration
}
}
rootConfiguration.extendsFrom configurations.superConfiguration
dependencies {
masterConfiguration 'group:artifactid:version'
superConfiguration 'anotherGroup:anotherArtifactid:version'
}
//ALL IS OK
println configurations.superConfiguration.resolvedConfiguration.files
}
//NOT OK
println configurations.projectAConfiguration.resolvedConfiguration.files
解决方法
您可以通过引用子项目的方式与声明依赖项的方式相同来获取子项目的配置。您无需创建其他配置即可对其进行扩展。
例如(Groovy DSL):
// Root project A
task printConfigurationB {
doLast {
println project("B").configurations.superConfiguration.resolve()
}
}
,
我已使用此解决方案解决了我的问题:
在所有子项目上添加任务。
task resolveMyConf {
doLast {
it.ext.confResolve = it.configurations.superConfiguration..resolvedConfiguration.files
}
}
和项目A
task resolveAllConf {
suprojects.each {
dependsOn it.resolveMyConf
}
doLast {
//and now,we can collect all task result
}
}
我不知道这是否很好,也许有更好的解决方案。 但这是工作
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。