Gradle 如果我们有回购本地导入它,否则通过maven下载

Gradle 如果我们有回购本地导入它,否则通过maven下载,gradle,android-gradle-plugin,Gradle,Android Gradle Plugin,我正在尝试更新gradle脚本,以查看是否有回购协议的本地实例。否则请下载。本质上,我们开发人员不希望在本地处理共享回购协议时推到maven。然而,作为部署管道的一部分,我们的工具将需要拉动它。我们并不太担心回购协议变得过时。然而,我不知道如何写这句话 目前的解决方案是总是取消回购协议。同样,我们的目标是拥有更多的控制权,而不需要与我们的回购同步 configurations.all { // check for updates every build resolutionStr

我正在尝试更新gradle脚本,以查看是否有回购协议的本地实例。否则请下载。本质上,我们开发人员不希望在本地处理共享回购协议时推到maven。然而,作为部署管道的一部分,我们的工具将需要拉动它。我们并不太担心回购协议变得过时。然而,我不知道如何写这句话

目前的解决方案是总是取消回购协议。同样,我们的目标是拥有更多的控制权,而不需要与我们的回购同步

configurations.all {
    // check for updates every build
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

 compile ('com.aaaa.commons:1.2.3') { changing=true }
渴望

if(path/to/project exists){
  import the local dependency
}
else{
  compile ('com.aaaa.commons:1.2.3') { changing=true }
}
编辑

问题是需要将其作为模块导入。这基本上就是在我的应用程序中处理它。这正是我不想要的。如果我做一个

include ':commons'
project(':commons').projectDir = new File(rootProject.projectDir,
    '/Users/asdasd/Repos/android-commons') 
我们得到

   Error:Project :app declares a dependency from configuration 'compile' to configuration 'default' which is not declared in the descriptor for project :commons.
编辑 我需要在文件树中再选择一个。。我选择了我的库根目录。我需要的是commons而不是android commons

mymainproject
android-commons
    android-commons.iml
    build
    build.gradle
    **commons**
从那以后,直到我像这样编译它,我才能够真正使用这个库(注意,我正在进行调试,因为发行版总是会拉它)


我经常使用一种简单的方法:

try {
    compile project(':my-project')
} catch (UnknownProjectException) {
    compile 'com.aaaa.ooooo:1.2.3'
}
但是,我不确定使用
解决方案策略是否有更好的解决方案。一个缺点是:如果可以找到另一个项目,则在将项目发布到存储库时不会将其作为依赖项添加

可能有必要在
setting.gradle
文件中添加项目包含条件,如下所示:

if (new File(rootDir, 'my-project').isDirectory()) {
    include ':my-project'
}

非常有趣。尽管主要问题是,如果我尝试在我的顶级设置.gradle中添加包含“:commons”的模块,它将在应用程序中创建一个同名的空目录。我正在app/build中尝试你的代码。gradle在我的答案中添加了一个在
settings.gradle
中包含条件项目的示例。
if (new File(rootDir, 'my-project').isDirectory()) {
    include ':my-project'
}