Uso de maven deploy-file

Aug 20 2020

Leyendo el doc. del deploy:deploy-file(https://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html), parece que los únicos parámetros requeridos son Parámetros requeridos <file>, <repositoryId> and <url>, sin embargo, cuando ejecuto:

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

Tengo este error:

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

Respuestas

3 VonC Aug 22 2020 at 14:42

Normalmente lo uso deploy:deploy-fileen la línea de comandos, cuando tengo un artefacto de terceros sin su 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/"

Todo lo que necesita hacer es modificar ay gal comienzo del comando.

Puedes agregar una versión v si tienes una versión específica y ponerla en la parte de lanzamiento de tu 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

La página "Uso" del complemento (https://maven.apache.org/plugins/maven-deploy-plugin/usage.html) afirma:

Si la siguiente información requerida no se especifica de alguna manera, el objetivo fallará:

  • el archivo de artefacto para implementar
  • el grupo, artefacto, versión y empaquetado del archivo a implementar. Estos se pueden tomar del pomFile especificado y anular o especificar usando la línea de comando. Cuando pomFile contiene una sección principal, el groupId del padre se puede considerar si el groupId no se especifica más para el proyecto actual o en la línea de comando.
  • la información del repositorio: la URL para implementar y la asignación de repositoryId a una sección del servidor en el archivo settings.xml. Si no especifica un repositoryId, Maven intentará extraer la información de autenticación utilizando el id 'remote-repository'.

Por lo tanto, debe especificar las coordenadas o proporcionar un archivo POM.