我可以将自定义存储库添加到gradle.properties吗?

问题描述 投票:0回答:3

我希望能够在设置中定义存储库(理想情况下是用户gradle.properties)

最终目标是这样的:

repositories {
    mavenCentral() // Can't/don't want to use this
    nexusCentral() // Can use these - on network Nexus server
    nexusSnapshot()
}

我该怎么做呢?同样,这将理想地放在用户级gradle.properties文件中,因此我们不必在每个模块中引用它。

这只是Maven提供的普通maven风格工件库,手动方式是:

maven {
        url "http://path/to/nexus"
    }

另一个要求是使用“发布”任务,该任务具有为存储库定义的凭证(Jenkins用于发布模块):

publishing {
...
maven {
            url "http://path/to/nexus"
            // Jenkins provides these as -P Gradle parameters.
            credentials {
                username = "${uploaderUser}"
                password = "${uploaderPassword}"
            }
        }

普通用户不会知道这些凭据,但最好在Jenkin的gradle.properties中配置。我们不希望用户构建失败,因为他们无法解析凭据 - 他们甚至不会使用“发布”任务。

gradle
3个回答
3
投票

你可以使用这样的东西:

   maven {
            credentials {
                username getCredentialsMavenUsername()
                password getCredentialsMavenPassword()
            }
            url 'xxxxx'
   }

/**
 * Returns the credential username used by Maven repository
 * Set this value in your ~/.gradle/gradle.properties with CREDENTIALS_USERNAME key
 * @return
 */
def getCredentialsMavenUsername() {
    return hasProperty('CREDENTIALS_USERNAME') ? CREDENTIALS_USERNAME : ""
}

/**
 * Returns the credential password used by Maven repository
 * Set this value in your ~/.gradle/gradle.properties with CREDENTIALS_PASSWORD key
 * @return
 */
def getCredentialsMavenPassword() {
    return hasProperty('CREDENTIALS_PASSWORD') ? CREDENTIALS_PASSWORD : ""
}

如果用户没有凭据,则脚本不会失败。


2
投票

不确定是否能回答您的问题,但您可以将其放在gradle.properties文件中:

nexusUrl=http://path/to/nexus

并在build.gradle中执行此操作:

maven {
    url project.property(nexusUrl)
}

编辑:

关于你的证书,你应该需要的就是这样的

if (project.hasProperty('uploaderUser') && project.hasProperty('uploaderPassword')) {
    credentials {
        username = project.property('uploaderUser')
        password = project.property('uploaderPassword')
    }
}

0
投票

通过使用buildscript和allprojects下的maven {url'qazxsw poi'}替换Project / android / build.gradle中的jcenter()解决了这个问题:

http://nexusUrl

并在fluttersdk / packages / flutter_tools / gradle / flutter.gradle中使用maven {url'buildscript { repositories { google() maven { url 'http://nexusUrl' } } dependencies { classpath 'com.android.tools.build:gradle:3.2.1' } } allprojects { repositories { google() maven { url 'http://nexusUrl' } } } '}替换jcenter:

http://nexusUrl
© www.soinside.com 2019 - 2024. All rights reserved.