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

Aug 20 2020

Читая док. из 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:\Users\nunito\IdeaProjects\calzada\target\calzada.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.

Ответы

3 VonC Aug 22 2020 at 14:42

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

cmd /v /c "set a=an-artifact-name&& set g=com.company.xxx&& \
mvn deploy:deploy-file -Dfile=C:\path\to\!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-name&& set g=com.company.xxx&& && set v=1.2.3&& \
mvn deploy:deploy-file -Dfile=C:\path\to\!a!.jar -Dpackaging=jar -DgroupId=!g! -DartifactId=!a! \
-Dversion=!v! -DrepositoryId=nexus \
-Durl=http://company.com/nexus/content/repositories/company-releases/"
2 JFabianMeier Aug 25 2020 at 15:00

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

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

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

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