java - 使用 Ivy 和私有(private)公司存储库时,我应该把我的凭据放在哪里?

标签 java ant ivy nexus

我正在使用 Ant + Ivy,我的公司最近为我们自己的私有(private)图书馆设置了一个 Nexus 服务器。 Ivy 可以通过使用 ibilio 解析器和 m2compatible=true 从 Nexus 服务器获取依赖项,但我必须将我的凭据放在 ivysettings.xml 文件中。

不同的开发人员应该如何存储他们的凭据?

难道ivysettings.xml文件不应该在vcs中提交?

我真的不想以纯文本形式存储我的密码。

最佳答案

使用具有控制 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=s3Cret
hXiMYkpsPY7j3aIh/2/vfQ==

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

username=bill
password=ENC(hXiMYkpsPY7j3aIh/2/vfQ==)

以下 ANT 目标将解密任何加密的 ANT 属性:

<target name="decrypt">
    <taskdef name="groovy" classname="org.codehaus.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

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

关于java - 使用 Ivy 和私有(private)公司存储库时,我应该把我的凭据放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7503630/

相关文章:

bash - 根据文件所在的文件夹移动和重命名文件

java - Apache Ant java.lang.NoClassDefFoundError

scala - 更新后 Unresolved 依赖 SBT 0.13.0

Maven 和 Ivy 依赖项解析在 Gradle 6.0 中失败

java - 应用程序范围单例的非 AOP 最佳实践

java - RecycleViewer 没有连接适配器。网址也出错

java - 老板。如何确定一段时间内的并发用户数?

java - 从数据库中删除已删除的实体

java - ant 依赖与 antcall

dependencies - 无法手动将 jar 文件添加到 .ivy 缓存