Используйте файл настроек со свойствами, управляющими учетными данными 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
Это означает, что решение подходит только для сокрытия данных в покое.