请帮我找到解决问题的最佳方案:
在专用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存储库设置相同的凭据?我不想为所有存储库复制相同的代码。
非常感谢您!
答案 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-publish
和maven-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/'
}
这样,几乎没有机会签入机密信息...