我希望能够在设置中定义存储库(理想情况下是用户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中配置。我们不希望用户构建失败,因为他们无法解析凭据 - 他们甚至不会使用“发布”任务。
你可以使用这样的东西:
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 : ""
}
如果用户没有凭据,则脚本不会失败。
不确定是否能回答您的问题,但您可以将其放在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')
}
}
通过使用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