我有一个多项目构建,一个或多个子项目依赖于已损坏的模块。我想用依赖于本地JAR文件替换模块依赖项。
我已经尝试了以下(我真的没想到会这样做),但除此之外我还有点失落:
configurations.all {
resolutionStrategy {
failOnVersionConflict()
eachDependency { DependencyResolveDetails details ->
if (details.requested.group == "com.android.support" && details.requested.name == "support-v4") {
details.useTarget("lib/android-support-v4-fixed.jar")
}
}
}
}
如何用子文件(即JAR)替换子项目中的模块依赖项?
答案 0 :(得分:4)
最后,我浏览了大量文档,并且能够非常简单地实现我想要的目标。
configurations.all {
exclude group: 'com.android.support', module: 'support-v4'
}
dependencies {
compile files('libs/support-v4.jar')
}
以上将排除所有模块的maven依赖项(适用于库等),在这种情况下,我们已经排除了Android支持库。然后我只是添加我自己的支持库(有几个bug修复)作为常规jar依赖。
答案 1 :(得分:1)
您可以通过添加本地存储库来执行此操作:
configure(allprojects) {
repositories {
maven {
url "../repo" // this is relative to subproject, so assumes all subprojects are in the same folder
}
// ... other repositories
}
应使用mvn文件夹结构将固定jar放入repo dir。 对于你的情况,应该将两个文件添加到repo / com / android / support / support-v4:
support-v4-r6-fixed.jar
support-v4-r6-fixed.pom
注意:文件应该命名为<artifactId>-<version>.<ext>
,这应与pom中的值相匹配。
pom应该是一个有效的pom meta,其内容类似于(使用现有的pom创建破碎版本)
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.android.support</groupId>
<artifactId>support-v4</artifactId>
<version>r6-fixed</version>
</project>
答案 2 :(得分:0)
创建一个FlatDir存储库并将jar放在那里。
答案 3 :(得分:0)
如果要在 kotlin gradle 构建文件中使用很棒的 solution from Roman Konoval,则需要将路径指定为 URI,例如:
configure(allprojects) {
repositories {
maven {
url = uri("../repo") // this is relative to subproject, so assumes all subprojects are in the same folder
}
// ... other repositories
}