在Android gradle构建脚本中定义我自己的自定义maven存储库

在Android gradle构建脚本中定义我自己的自定义maven存储库,gradle,android-gradle-plugin,Gradle,Android Gradle Plugin,我知道Maven存储库通常可以使用类似于以下代码段的东西添加 allprojects { repositories { mavenLocal() google() jcenter() } } 然而,我想要实现的是创建自己的Maven存储库条目。因此,添加到上面的示例中,这可能类似于下面的内容 allprojects { repositories { mavenLocal() google()

我知道Maven存储库通常可以使用类似于以下代码段的东西添加

allprojects {
    repositories {
        mavenLocal()
        google()
        jcenter()
    }
}
然而,我想要实现的是创建自己的Maven存储库条目。因此,添加到上面的示例中,这可能类似于下面的内容

allprojects {
    repositories {
        mavenLocal()
        google()
        jcenter()
        myNewRepo()
    }
}
请注意,“myNewRepo”是新的存储库,已添加到底部。如果我像上面所示简单地添加字符串,我会从gradle得到以下错误

在类型为org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler的存储库容器上找不到参数[]的方法myRepo()

我这样做的原因是,我有一个我自己的几个Maven存储库的列表,而且我的所有应用程序都必须输入这些条目,这会让我感到很麻烦。例如,我当前的实现如下所示

allprojects {
    repositories {
        mavenLocal()
        google()
        jcenter()
        maven {
            url: "some url"
            name: "some name"
        }
        maven {
            url: "some url"
            name: "some name"
        }
        maven {
            url: "some url"
            name: "some name"
        }
        maven {
            url: "some url"
            name: "some name"
        }
        maven {
            url: "some url"
            name: "some name"
        }
    }
}
我觉得创建自己的存储库条目可以让它更干净

我这样做的另一个动机是,我希望能够根据提供给gradle的一些输入属性有条件地添加一些maven存储库

gradle -Puse_repo=true <task>.
gradle-Puse\u repo=true。
我想如果我能够创建自己的条目,我可以在该条目中添加检查,以确定是否包含存储库


谢谢

我认为您不能真正添加像
jcenter()
这样的新条目,因为这些条目本质上只是内置接口上的方法

但是,如果您只是尝试将自己的存储库配置移动到单独的方法/闭包中,则可以使用以下选项之一:

def myNewRepos = {
    maven {
        url = "some url"
        name = "some name"
    }
    if (project.hasProperty('use_repo')
          && project.property('use_repo') == 'true') {
        maven {
            url = "some other url"
            name = "some other name"
        }
    }
    // ... any others ...
}

/* OPTION 1: */
repositories {
    mavenLocal()
    // ... any others ...
}
repositories myNewRepos

/* OPTION 2: */
repositories {
    mavenLocal()
    // ... any others ...

    myNewRepos.delegate = owner
    myNewRepos()
}

谢谢你的主意。这看起来会奏效。有没有办法使这成为有条件的?所以只有在命令行上指定了属性的情况下才添加它。好的,对不起,我错过了你问题中的那个部分。我已经编辑了我的答案,以展示如何有条件地添加一个存储库(在我的示例代码中名为
someothername
)。谢谢