我实现了一个自定义插件,在这个插件中我提供了一个默认的存储库配置,如下所示:
class MyPlugin implements Plugin<Project> {
...
...
...
@Override
void apply(Project project) {
project.repositories {
mavenLocal()
mavenCentral()
jcenter()
}
...
...
...
}
}
但是,为了能够在构建脚本中应用我的插件,客户端代码将在其构建脚本中添加这样的部分:
buildscript {
repositories {
mavenLocal()
maven { url "<organization maven repo url>" }
mavenCentral()
}
dependencies {
classpath 'com.organization.xxx:my-plugin:1.0.130'
}
}
apply plugin: 'com.organization.my-plugin'
鉴于,我希望能够做到这样的事情:
class MyPlugin implements Plugin<Project> {
...
...
...
@Override
void apply(Project project) {
project.repositories = project.buildscript.repositories
...
...
...
}
}
但是,当我这样做时,我得到一个错误,可以理解,因为project.repositories
属性是只读的。
那么,有没有一种正确的方法可以达到我的目的呢?
答案 0 :(得分:2)
我认为错误是因为您正在尝试为属性project.repositories
分配值。幸运的是,你只需要添加存储库,所以这可能会有效(未经测试)
@Override
void apply(Project project) {
project.repositories.addAll(project.buildscript.repositories)
}
顺便说一下,我不确定你真的想要这样做。更好的方法是在其他地方定义公共存储库,然后可以添加到buildscript和project