Utilizzo del file di distribuzione Maven

Aug 20 2020

Leggendo il doc. del deploy:deploy-file(https://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html), sembra che gli unici parametri obbligatori siano Parametri obbligatori <file>, <repositoryId> and <url>, tuttavia quando eseguo:

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

Ho ricevuto questo errore:

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

Risposte

3 VonC Aug 22 2020 at 14:42

Di solito lo uso deploy:deploy-filenella riga di comando, quando ho un artefatto di terze parti senza il suo 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/"

Tutto quello che devi fare è modificare ae gall'inizio del comando.

Puoi aggiungere una versione v se hai una versione specifica e inserirla nella parte di rilascio del tuo 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 pagina "Utilizzo" del plugin (https://maven.apache.org/plugins/maven-deploy-plugin/usage.html) stati:

Se le seguenti informazioni richieste non vengono specificate in qualche modo, l'obiettivo fallirà:

  • il file artefatto da distribuire
  • il gruppo, l'artefatto, la versione e il pacchetto del file da distribuire. Questi possono essere presi dal pomFile specificato e sovrascritti o specificati utilizzando la riga di comando. Quando il pomFile contiene una sezione genitore, il groupId del genitore può essere considerato se il groupId non è specificato ulteriormente per il progetto corrente o sulla riga di comando.
  • le informazioni sul repository: l'URL su cui eseguire la distribuzione e l'ID del repository mappato a una sezione del server nel file settings.xml. Se non specifichi un repositoryId, Maven proverà a estrarre le informazioni di autenticazione utilizzando l'ID "remote-repository".

Quindi è necessario specificare le coordinate o fornire un file POM.