在build.gradle中,如何提取和重用Maven存储库配置?

在build.gradle中,如何提取和重用Maven存储库配置?,gradle,groovy,closures,build.gradle,Gradle,Groovy,Closures,Build.gradle,我有一个build.gradle文件: repositories { maven { credentials { username "$artifactory_user" password "$artifactory_password" } url 'http://some.domain/artifactory/repo' } } publishing { repositor

我有一个
build.gradle
文件:

repositories {
    maven {
        credentials {
            username "$artifactory_user"
            password "$artifactory_password"
        }
        url 'http://some.domain/artifactory/repo'
    }
}

publishing {
    repositories {
        publications {
            maven(MavenPublication) {
                from components.java
            }
        }
        maven {
            credentials {
                username "$artifactory_user"
                password "$artifactory_password"
            }
            url 'http://some.domain/artifactory/repo'
        }
    }
}
我想提取并重用Maven存储库定义

这不起作用:

repositories {
    mavenRepository()
}

publishing {
    repositories {
        publications {
            maven(MavenPublication) {
                from components.java
            }
        }
        mavenRepository()
    }
}

private void mavenRepository() {
    maven {
        credentials {
            username "$artifactory_user"
            password "$artifactory_password"
        }
        url 'http://some.domain/artifactory/repo'
    }
}
结果是

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


如何实现这一目标?

假设您有一个单独的repositories.gradle文件,并将您的maven repo命名

maven {
    name 'myrepo'
    url 'https://xxxx'
    credentials {
        username = System.getenv("xxx") ?: "${xxx}"
        password = System.getenv("xxx") ?: "${xxx}"
    }
}
maven { name 'anotherrepo' }
然后,在根项目级别,您可以运行:

apply from: "$rootDir/gradle/repositories.gradle"
这将使用所有repo填充存储库。然后,要使用“在其他地方填充特定对象”,您可以使用:

repositories.add(rootProject.repositories.getByName('myrepo'))
我在这个博客页面上找到了答案:
感谢强大的程序员

请参阅带有一些解决方案的类似问题:可能重复的