Gradle中所有存储库的凭据相同

时间:2018-08-19 07:43:36

标签: gradle build.gradle

请帮我找到解决问题的最佳方案:

在专用LAN网络中,我具有联系存储库,我需要使用一个用户来访问存储库。

最简单的解决方案是将用户名和密码添加到gradle.properties文件中,并在每个build.gradle文件中,每个回购都编写相同的代码:

maven {
        credentials {
            username "$mavenUser"
            password "$mavenPassword"
        }
        url 'https://maven.yourcorp1.net/'
   }

maven {
        credentials {
            username "$mavenUser"
            password "$mavenPassword"
        }
        url 'https://maven.yourcorp2.net/'
   }

对于所有存储库,gradle.properties中的mavenUser和mavenPassword都相同:

mavenUser=admin
mavenPassword=admin123

这一切都很好并且可以很好地工作,但是有很多重复的代码。

也许您知道-如何在一处为所有Maven存储库设置相同的凭据?我不想为所有存储库复制相同的代码。

非常感谢您!

2 个答案:

答案 0 :(得分:2)

您可以尝试找到所有存储库URL的公共部分,并使用类似的方法:

['yourcorp1', 'yourcorp2'].each {
    maven {
         credentials {
             username "$mavenUser"
             password "$mavenPassword" 
        }
        url "https://maven.${it}.net/"
    } 
}

如果它们有许多Gradle文件,请将其放在repositories.gradle文件中并使用include directive

答案 1 :(得分:1)

一个人可以将Maven服务器设置添加到$HOME/.m2/settings.xml

<settings>
   <servers>
    <server>
        <id>yourcorp1</id>
        <username>username</username>
        <password>password</password>
    </server>
    <server>
        <id>yourcorp2</id>
        <username>username</username>
        <password>password</password>
    </server>
    ...
    </servers>
</settings>

而Gradle需要插件maven-publishmaven-publish-auth

apply plugin: 'maven-publish'
apply plugin: 'maven-publish-auth'

并且必须为存储库分配唯一的名称:

maven {
    name: 'yourcorp1'
    url 'https://maven.yourcorp1.net/'
}

maven {
    name: 'yourcorp2'
    url 'https://maven.yourcorp2.net/'
}

这样,几乎没有机会签入机密信息...