kar*_*arl 2 android gradle maven android-gradle-plugin
我正在开发一个 android 项目,并且有许多使用相同凭据的自定义存储库:
repositories {
maven {
url "<url1>"
credentials {
username = "<username>"
password = "<password>"
}
}
maven {
url "<url2>"
credentials {
username = "<username>"
password = "<password>"
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法定义一个方法(块?),以便我可以定义一次用户名和密码而不必每次都重复?我希望能够做到:
repositories {
customMaven { url "<url1>"}
customMaven { url "<url2>"}
}
Run Code Online (Sandbox Code Playgroud)
抱歉,如果我在这里错误地使用了术语 - gradle 语法对我来说有点神秘。
通过@ToYonos提供的第一个答案将正常工作,但如果你正在寻找一个基础上的解决方案配置块,你可以使用的方法MavenArtifactRepository maven(Action<? super MavenArtifactRepository> action)从RepositoryHandler类(见这里),具体如下:
// a Closure that builds an Action for configuring a MavenArtifactRepository instance
def customMavenRepo = { url ->
return new Action<MavenArtifactRepository>() {
void execute(MavenArtifactRepository repo) {
repo.setUrl(url)
repo.credentials(new Action<PasswordCredentials>() {
void execute(PasswordCredentials credentials) {
credentials.setUsername("<username>")
credentials.setPassword("<password>")
}
});
}
};
}
// usage
repositories {
jcenter()
maven customMavenRepo("http://company.com/repo1")
maven customMavenRepo("http://company.com/repo2")
maven customMavenRepo("http://company.com/repo3")
}
Run Code Online (Sandbox Code Playgroud)
从下面的评论中编辑:解决方案将关闭如下。我认为这里需要使用curry方法(参见Currying 闭包),但也许还有其他方法可以简化......
// one closure with URL as parameter
ext.myCustomMavenClosure = { pUrl ->
url pUrl
credentials {
username = "<username>"
password = "<password>"
}
}
// helper function to return a "curried" closure
Closure myCustomMaven (url){
return myCustomMavenClosure.curry(url)
}
repositories {
// use closure directly
maven myCustomMavenClosure.curry ("http://mycompany.com/repo1")
// or use helper method
maven myCustomMaven("http://mycompany.com/repo2")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
442 次 |
| 最近记录: |