使用Ivy和私人公司存储库时,我应该将凭证放在哪里?

使用Ivy和私人公司存储库时,我应该将凭证放在哪里?,第1张

使用Ivy和私人公司存储库时,我应该将凭证放在哪里?

将设置文件与控制Nexus凭据的属性一起使用:

<ivysettings>    <property name="repo.host" value="default.mycompany.com" override="false"/>    <property name="repo.realm" value="Sonatype Nexus Repository Manager" override="false"/>    <property name="repo.user" value="deployment"  override="false"/>    <property name="repo.pass" value="deployment123"  override="false"/>    <credentials host="${repo.host}" realm="${repo.realm}" username="${repo.user}" passwd="${repo.pass}"/>    ..    ..</ivysettings>

运行构建时,您可以指定真实的用户名和密码:

ant -Drepo.user=mark -Drepo.pass=s3Cret
更新/增强

将密码存储为文件系统上的属性需要加密

Jasypt有一个命令行程序,可以生成加密的字符串:

$ encrypt.sh verbose=0 password=123 input=s3CrethXiMYkpsPY7j3aIh/2/vfQ==

可以将其保存在构建的属性文件中:

username=billpassword=ENC(hXiMYkpsPY7j3aIh/2/vfQ==)

以下ANT目标将解密所有加密的ANT属性:

<target name="decrypt">    <taskdef name="groovy" classname="org.prehaus.groovy.ant.Groovy" classpathref="build.path"/>    <groovy>    import org.jasypt.properties.EncryptableProperties    import org.jasypt.encryption.pbe.StandardPBEStringEncryptor    StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor()    encryptor.setPassword(properties["master.pass"])    Properties props = new EncryptableProperties((Properties)properties, encryptor);    props.propertyNames().each {        properties[it] = props.getProperty(it)    }    </groovy></target>

当然,要使此工作有效,需要在构建过程中指定用于加密属性的密码。

ant -Dmaster.pass=123

这意味着该解决方案仅适用于隐藏静态数据。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5586490.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存