我正在开发一个Android项目。我们使用DependencyResoultionStrategy
来交换一些依赖版本。代码如下所示:
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
final version = getVersionForDependency(project, details.requested.group, details.requested.name)
if (version != null) {
details.useVersion(version)
}
}
因此,例如,项目请求依赖项group:name:1.1.2
,但它被交换,因此使用了依赖项group:name:1.2.0
。这非常有效,项目是使用正确的依赖(第二个)构建的。
我们还有一个publish
任务,它将项目部署到本地maven存储库。我们使用maven插件,代码如下:
apply plugin: 'maven'
task publish(dependsOn: uploadArchives)
uploadArchives {
configurations {
deployerFTP
}
repositories {
mavenDeployer {
configuration = configurations.deployerFTP
repository(URL) {
authentication(USERNAME, PASSWORD)
}
}
}
dependencies {
deployerFTP "org.apache.maven.wagon:wagon-ftp:2.4"
}
}
问题是,如果我在结果.pom
文件中发布库,则输入依赖项group:name:1.1.2
,而不是实际使用的那个。如何更改此行为,以便pom包含正确的依赖项?
答案 0 :(得分:0)
我找到了答案,只需添加此代码块:
mavenDeployer {
// ...
pom.whenConfigured { pom ->
pom.dependencies = pom.dependencies.collect { dep ->
def version = getVersionForDependency(project, dep.groupId, dep.artifactId)
if (version != null) {
dep.version = version
}
return dep
}
}
}