Можно ли передать пароль в Maven Deploy из командной строки?

Это то, как он работает в настоящее время, и это использование плагина Maven Deploy

pom.xml

[...]
  <distributionManagement>
    <repository>
      <id>internal.repo</id>
      <name>MyCo Internal Repository</name>
      <url>Host to Company Repository</url>
    </repository>
  </distributionManagement>
[...]

settings.xml

[...]
    <server>
      <id>internal.repo</id>
      <username>someUser</username>
      <password>somePassword</password>
    </server>
[...]

и я пытаюсь найти способ ввода имени пользователя и пароля в командной строке. достигать mvn deploy -someUser -somePassword

4 ответа

Решение

settings.xml считается личным, поэтому по этой причине имя пользователя + пароль хранятся в (user-)settings.xml, Так что, в общем, нет причин передавать их в качестве аргумента. (кстати, пароли могут храниться здесь в зашифрованном виде) maven-deploy-plugin не имеет возможности передавать их через командную строку. Тем не менее, я видел такие хаки, как:

<username>${internal.repo.username}</username>

И теперь вы можете сделать -Dinternal.repo.username=someUser

Я выложу здесь полное решение, но в основном решение Роберта Шолте работает великолепно.

В вашем ~/.m2/settings.xml у вас должно быть следующее

<settings>
    <servers>
        <server>
            <id>${repo.id}</id>
            <username>${repo.login}</username>
            <password>${repo.pwd}</password>
        </server>
    </servers>
</settings>  

а потом ты просто

mvn -Drepo.id=myRepo -Drepo.login=someUser -Drepo.pwd=somePassword clean install

Вы даже можете использовать свою переменную среды (например, если вы делаете это на удаленном сервере / контейнере):

mvn -Drepo.id=$REPO_ID -Drepo.login=$REPO_LOGIN -Drepo.pwd=$REPO_PWD clean install

Это тоже работает:

<server>
  <id>${repo.id}</id>
  <username>${repo.username}</username>
  <password>${repo.password}</password>
</server>

У меня это работает нормально, мы можем определить переменную имени пользователя и пароля по своему выбору, но мы должны использоватьrepositoryIdпеременная для идентификатора в файле settings.xml.

Он был протестирован с версией maven «Apache Maven 3.6.3 (Red Hat 3.6.3-13)».

Добавьте этот фрагмент в settings.xml:

      <servers>
  <server>
    <id>${repositoryId}</id>
    <username>${repo.login}</username>
    <password>${repo.pwd}</password>
  </server>
</servers>

Запустите этот фрагмент, чтобы загрузить файл на Nexus:

      mvn deploy:deploy-file -DrepositoryId=<repoid> -Drepo.login=<username> -Drepo.pwd=<password> -Durl=http://<url of Nuxus>:<port>/repository/<repository space> -Dfile=<file location> -DgroupId=<Group Id> -DartifactId=<artfact id>  -Dversion=<version> -Dpackaging=<packaging> -Dclassifier=<classifier> -X
Другие вопросы по тегам