在哪里把Gradleconfiguration(即凭据)不应该提交?
我试图将一个Gradle构build的工件部署到一个Maven仓库,我需要为它指定凭证。 这现在工作正常:
uploadArchives { repositories { mavenDeployer { repository(url: "http://.../nexus/content/repositories/snapshots/") { authentication(userName: "admin", password: "admin123") } } } }
但我不喜欢在源代码控制中存储凭据。 使用Maven,我将定义一个服务器configuration,并在~/.m2/settings.xml
分配证书。 我如何做与Gradle相似的东西?
〜/ .gradle / gradle.properties :
mavenUser=admin mavenPassword=admin123
build.gradle :
... authentication(userName: mavenUser, password: mavenPassword)
第一个答案仍然有效,但API已经改变了。 由于我的编辑没有被接受,我把它作为单独的答案。
authentication()
方法仅用于提供身份validation方法(例如Basic),而不提供任何凭据。
你也不应该使用它,因为它是在失败时打印证书!
这他应该看起来像你的build.gradle
maven { credentials { username "$mavenUser" password "$mavenPassword" } url 'https://maven.yourcorp.net/' }
在您的userhome目录中的gradle.properties中:
mavenUser=admin mavenPassword=admin123
还要确保GRADLE_USER_HOME
被设置为~/.gradle
否则那里的属性文件将不会被parsing。
也可以看看:
https://docs.gradle.org/current/userguide/build_environment.html
和
https://docs.gradle.org/current/userguide/dependency_management.html(23.6.4.1 )
如果你有用户特定的凭据(即每个开发者可能有不同的用户名/密码),那么我会build议使用gradle-properties-plugin 。
- 把默认值放在
gradle.properties
- 每个开发人员重写
gradle-local.properties
(这应该是git忽略)。
这比重写使用$USER_HOME/.gradle/grade.properties
因为不同的项目可能具有相同的属性名称。
你可以把凭证放在一个属性文件中,然后用下面的方法读取它:
Properties props = new Properties() props.load(new FileInputStream("yourPath/credentials.properties")) project.setProperty('props', props)
另一种方法是在操作系统级别定义环境variables并使用以下命令读取它们:
System.getenv()['YOUR_ENV_VARIABLE']
您也可以通过-PmavenUser=user -PmavenPassword=password
在命令行上提供variables。
这可能是有用的,你不能使用gradle.properties文件出于某种原因。 例如,在构build服务器上,我们使用Gradle和-g
选项,以便每个构build计划都有自己的GRADLE_HOME
。