Использование maven deploy-file

#maven

#maven

Вопрос:

Чтение документа deploy:deploy-file (https://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html ), кажется, что единственными требуемыми параметрами являются обязательные параметры <file>, <repositoryId> and <url> , тем не менее, когда я запускаю :

 mvn deploy:deploy-file -Durl={url} -DrepositoryId={repoId} -Dfile=D:UsersnunitoIdeaProjectscalzadatargetcalzada.zip
  

Я получил эту ошибку:

 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy-file (default-cli) on project oib-kw-guards-web: The artifact i
nformation is incomplete or not valid:
[ERROR]   [0]  'groupId' is missing.
[ERROR]   [1]  'artifactId' is missing.
[ERROR]   [2]  'version' is missing.
  

Комментарии:

1. Я предполагаю, что вы упаковали этот zip-файл с помощью maven-assembly-plugin? Если это так, вы можете использовать mvn deploy как обычно…

Ответ №1:

Я обычно использую deploy:deploy-file в командной строке, когда у меня есть сторонний артефакт без его pom.xml :

 cmd /v /c "set a=an-artifact-nameamp;amp; set g=com.company.xxxamp;amp; 
mvn deploy:deploy-file -Dfile=C:pathto!a!.jar -Dpackaging=jar -DgroupId=!g! -DartifactId=!a! 
-Dversion=1.0-DEV-SNAPSHOT -DrepositoryId=nexus 
-Durl=http://company.com/nexus/content/repositories/company-snapshots/"
  

Все, что вам нужно сделать, это изменить a и g в начале команды.

Вы можете добавить версию v, если у вас есть определенная версия, и поместить ее в выпускную часть вашего Nexus:

 cmd /v /c "set a=an-artifact-nameamp;amp; set g=com.company.xxxamp;amp; amp;amp; set v=1.2.3amp;amp; 
mvn deploy:deploy-file -Dfile=C:pathto!a!.jar -Dpackaging=jar -DgroupId=!g! -DartifactId=!a! 
-Dversion=!v! -DrepositoryId=nexus 
-Durl=http://company.com/nexus/content/repositories/company-releases/"
  

Ответ №2:

Страница «Использование» плагина (https://maven.apache.org/plugins/maven-deploy-plugin/usage.html) состояния:

Если следующая требуемая информация каким-либо образом не указана, цель завершится неудачей:

  • файл артефакта для развертывания
  • группа, артефакт, версия и упаковка файла для развертывания. Они могут быть взяты из указанного pomFile и переопределены или указаны с помощью командной строки. Когда pomFile содержит родительский раздел, идентификатор родительской группы может учитываться, если идентификатор группы не указан дополнительно для текущего проекта или в командной строке.
  • информация о репозитории: URL для развертывания и сопоставление идентификатора репозитория с разделом сервера в settings.xml файл. Если вы не укажете repositoryId, Maven попытается извлечь информацию для аутентификации, используя идентификатор ‘remote-repository’.

Итак, вам нужно либо указать координаты, либо предоставить POM-файл.