在我的Android项目中,我已经将mavenLocal()定义为root build.gradle文件中的存储库。但是,如果我发布对mavenLocal的更改,那么我的项目将无法识别这些更改。但是,如果我明确定义位置,则会找到更改,证明更改已正确发布。所以好像我的mavelLocal没有指向默认位置?
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
classpath 'com.google.gms:google-services:4.0.1'
classpath 'io.fabric.tools:gradle:1.25.1'
}
}
allprojects {
repositories {
mavenLocal() // picks wrong location?
// maven { "C:/Users/<username>/.m2/repository/" } // mavenLocal fallback
maven { url nexusRepositoryUrl }
maven { url nexusSnapshotsUrl }
maven { url nexusReleasesUrl }
mavenCentral()
google()
maven { url "https://maven.google.com" }
jcenter()
}
}
我该如何解决?我正在同一个项目中的几个人一起工作,所以后备方法不是解决方案。当然,我可以使用可变的用户路径,但这不是我想要的:
maven { url System.getenv('USER_PATH') + "/.m2/repository/" }
我在/.m2目录中没有settings.xml文件(可用于覆盖默认的Maven本地存储库位置)。我可以创建一个解决该问题的方法,但是感觉没有必要将“默认”位置更改为“默认”位置。
因此,我正在专门寻找为什么mavenLocal()的默认实现似乎无效的原因。
编辑
以下内容可能是相关的,也可能是不相关的问题/问题:我遇到了一些麻烦,无法将旧的存储库缓存替换为新的存储库,因此在这种情况下也可能是个问题。我对gradle缓存的工作方式了解不多,因此,如果有人可以为我提供明确的解决方案,那么它也可能会解决问题。有时我可以清除缓存,但是问题一直在发生,因此我需要永久修复。
以下各项组合后,缓存似乎会临时更新(不是特定于订单的,并且无法找出解决问题所需的确切条件):