Uso de maven deploy-file

Aug 20 2020

Lendo o doc. do deploy:deploy-file(https://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html), parece que os únicos parâmetros obrigatórios são Parâmetros obrigatórios <file>, <repositoryId> and <url>, no entanto, quando eu executo:

mvn deploy:deploy-file -Durl={url} -DrepositoryId={repoId} -Dfile=D:\Users\nunito\IdeaProjects\calzada\target\calzada.zip

Eu tenho este erro:

[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.

Respostas

3 VonC Aug 22 2020 at 14:42

Normalmente uso deploy:deploy-filena linha de comando, quando tenho um artefato de terceiros sem 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/"

Tudo que você precisa fazer é modificar ae gno início do comando.

Você pode adicionar uma versão v se tiver uma versão específica e colocá-la na parte de lançamento do seu 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

A página de "Uso" do plugin (https://maven.apache.org/plugins/maven-deploy-plugin/usage.html) afirma:

Se as seguintes informações obrigatórias não forem especificadas de alguma forma, a meta falhará:

  • o arquivo de artefato para implantar
  • o grupo, artefato, versão e pacote do arquivo a ser implantado. Eles podem ser obtidos do pomFile especificado e substituídos ou especificados usando a linha de comando. Quando o pomFile contém uma seção pai, o groupId do pai pode ser considerado se o groupId não for especificado posteriormente para o projeto atual ou na linha de comando.
  • as informações do repositório: o url para implementar e o mapeamento repositoryId para uma seção do servidor no arquivo settings.xml. Se você não especificar um repositoryId, o Maven tentará extrair as informações de autenticação usando o id 'repositório remoto'.

Portanto, você precisa especificar as coordenadas ou fornecer um arquivo POM.