在Android Gradle中,是否有任何方法可以使用本地快照依赖项?

在Android Gradle中,是否有任何方法可以使用本地快照依赖项?,android,gradle,build-dependencies,Android,Gradle,Build Dependencies,我的Android应用程序是基于Gradle的,每次构建都需要很长时间。这是由于我拥有的模块数量。即使子模块中没有变化,它也会继续重建每个源。 我想知道是否有任何方法可以将这些模块转换为本地快照依赖项,因为我不经常更新它们? 我很确定这是可能的,但我对gradle和maven有着非常基本的经验,所以我想不出一个简单的方法来做到这一点 基本上现在我列出了我的依赖项,如下所示: dependencies { compile project(':Library:lib1') comp

我的Android应用程序是基于Gradle的,每次构建都需要很长时间。这是由于我拥有的模块数量。即使子模块中没有变化,它也会继续重建每个源。 我想知道是否有任何方法可以将这些模块转换为本地快照依赖项,因为我不经常更新它们? 我很确定这是可能的,但我对gradle和maven有着非常基本的经验,所以我想不出一个简单的方法来做到这一点

基本上现在我列出了我的依赖项,如下所示:

dependencies {

    compile project(':Library:lib1')
    compile project(':Library:lib2')
    compile project(':Library:lib3')
}
repositories {
    local()
}

dependencies {

    compile 'com.lib1:lib:SNAPSHOT-1.0')
    compile 'com.lib2:lib:SNAPSHOT-1.0')
    compile 'com.lib3:lib:SNAPSHOT-1.0')
}
我想用这样的东西:

dependencies {

    compile project(':Library:lib1')
    compile project(':Library:lib2')
    compile project(':Library:lib3')
}
repositories {
    local()
}

dependencies {

    compile 'com.lib1:lib:SNAPSHOT-1.0')
    compile 'com.lib2:lib:SNAPSHOT-1.0')
    compile 'com.lib3:lib:SNAPSHOT-1.0')
}

要使用本地快照,请使用插件。如果在版本(例如0.0.1-SNAPSHOT)中使用快照,则将快照发布到本地存储库。对于lib1的build.gradle,您应该执行以下操作:

apply plugin: 'java'
apply plugin: 'maven-publish'

project.version=0.0.1-SNAPSHOT

publishing {
    publications {
        maven(MavenPublication) {
            from components.java
        }
    }
}
并运行:publishMavenPublicationToVenLocal目标

在使用库的项目的渐变生成文件中,请使用:

repositories {
    local()
}

dependencies {
    compile group: 'com.lib1', name: 'lib', version: 'SNAPSHOT-0.0.1', changing: true
}

“更改”属性表示未使用缓存版本(通常每24小时更新一次),但始终检查最新版本

您确定子项目已重新编译吗?我拥有的项目似乎不是这样,尽管它确实合并了库项目中的资源。我想当你从其他地方得到libs的时候,这种情况不会改变……我不确定它是否在重新编译,但它是在用模块做东西。通过命令行运行要快得多(我将使用shell脚本作为更快运行的变通方法)。但即使这样,它也在处理模块(mergeReleaseAssets、mergeReleaseResources、ProcessReleaseMifest等),而不处理远程编译的依赖项。Gradle的输出是什么?在构建lib1时是否会显示“最新”?如果是这样,它将跳过构建libs。部分构建是Gradle的主要功能之一。