在Android Gradle中,有没有办法使用本地快照依赖项?

3
我的 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')
}

1
你确定你的子项目已重新编译吗?以我所拥有的项目来看并不是这样的,尽管它会合并来自库项目的资源。我猜当你从其他地方获取库时这种情况也不会改变... - botteaap
我不确定它是否正在重新编译,但它正在处理模块。通过命令行运行会更快(最终我将使用我的shell脚本作为运行更快的解决方法)。但即使如此,它仍在处理模块(mergeReleaseAssets、mergeReleaseResources、processReleaseManifest等),而不对远程编译依赖项进行任何操作。 - Romain Piel
Gradle的输出是什么?在构建lib1时,它是否显示“UP-TO-DATE”?如果是,则跳过构建libs。部分构建是Gradle的主要功能之一。 - Grzegorz Żur
1个回答

0
要使用本地快照,请使用maven-publish插件。如果您在版本中使用SNAPSHOT(例如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
        }
    }
}

并运行 :publishMavenPublicationToMavenLocal 目标。

对于使用该库的项目,请在您的 Gradle 构建文件中使用:

repositories {
    local()
}

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

“changing” 属性表示不使用缓存版本(通常每 24 小时更新一次),而是始终检查最新版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接