Come rimuovere il file jar dal repository Maven locale che è stato aggiunto con install: install-file?


Risposte:


107

Sebbene sia disponibile un comando Maven che puoi eseguire per farlo, è più semplice eliminare manualmente i file dal repository.

In questo modo su Windows Documents and Settings\your username\.m2o $HOME/.m2su Linux


10
Eliminerei solo il file .m2/repository directory. Un collega ha già cancellato la directory .m2 e questo causa problemi perché nel nostro progetto dobbiamo modificare il settings.xmlfile.
Tiris

7
Nota che cancellando la .m2/repositorydirectory cancellerai anche tutti i file dei plugin di Maven. Mentre usando il purge-local-repositorycomando stai eliminando solo le dipendenze.
collinhaines

3
La struttura della directory sotto .m2/repositoryè organizzata in base all'ID del gruppo Maven, quindi puoi semplicemente eliminare la sottodirectory corrispondente all'artefatto che desideri rimuovere.
Kevin Krumwiede

124

Sebbene l'eliminazione manuale dei file funzioni, esiste un modo ufficiale per rimuovere le dipendenze del progetto dal repository locale (cache) e, facoltativamente, risolverle nuovamente da repository remoti.

L'obiettivo purge-local-repository, sul plug-in di dipendenza Maven standard, rimuoverà le dipendenze installate localmente di questo progetto dalla cache. Facoltativamente, è possibile risolverli contemporaneamente dai repository remoti.

Questo dovrebbe essere usato come parte di una fase del progetto perché si applica alle dipendenze per il progetto contenitore. Anche le dipendenze transitive verranno eliminate (localmente) per impostazione predefinita.

Se vuoi rimuovere esplicitamente un singolo artefatto dalla cache, usa purge-local-repositorycon il manualIncludeparametro. Ad esempio, dalla riga di comando:

mvn dependency:purge-local-repository -DmanualInclude="groupId:artifactId, ..."

La documentazione implica che questo non rimuove le dipendenze transitive per impostazione predefinita. Se si esegue con una posizione della cache non standard o su più piattaforme, questi sono più affidabili dell'eliminazione dei file "manualmente".

La documentazione completa si trova nelle specifiche del plug-in di dipendenza maven.

Nota : le versioni precedenti del dependencyplug-in Maven avevano un manual-purge-local-repositoryobiettivo, che ora (versione 2.8) è implicito nell'uso di manualInclude. Anche la documentazione per manualIncludes(con un s) dovrebbe essere letta.


Non credo che funzioni per .jari messaggi che non sono stati scaricati da Maven Central o da qualche altro repository. Quando eseguo questo comando si elimina tutti .jari messaggi che sono stati scaricati automaticamente, ma quando arriva ai messaggi .jarche ho installato manualmente, viene visualizzato questo messaggio di errore: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:purge-local-repository (default-cli) on project alloy-generator: Failed to refresh project dependencies for: myartifact: required artifacts missing: [ERROR] manually-downloaded-and-installed.jar ...
stiemannkj1

3
In realtà, dopo averlo controllato, mi sono reso conto che disinstalla il .jar, ma restituisce comunque un errore. Quindi, per .jari messaggi che sono stati installati manualmente, consiglierei di eliminare manualmente piuttosto che utilizzare questo metodo, perché Maven crea alcuni file strani come yourjar.jar.lastUpdatede yourjar.pom.lastUpdatedche potresti dover eliminare manualmente comunque. Ma se Maven gestisce automaticamente tutte le dipendenze, questo è un ottimo modo per disinstallare le dipendenze.
stiemannkj1

Questo approccio richiede anche un progetto esperto per eseguire il comando. Questo non sembra funzionare se hai eseguito il comando di installazione specificato dall'OP nel contesto di una build Gradle.
jdonmoyer

19

Almeno sulla versione corrente di Maven è necessario aggiungere l'opzione -DreResolve = false se si intende rimuovere le dipendenze dal repository locale senza scaricarle nuovamente.

mvn dependency:purge-local-repository -DreResolve=false

rimuove le dipendenze senza scaricarle nuovamente.



12

Elimina ogni cosa (jar, pom.xml, ecc.) Nella tua ~/.m2/repository/phonegap/1.1.0/directory locale se stai usando un sistema operativo Linux.


Quando rimuovo il vaso in questo modo, "scarica nuovamente" il vaso dalla vecchia cartella. Potrebbero esserci anche riferimenti che devono essere rimossi.
Antonio Sesto

0

Ho affrontato lo stesso problema, ho seguito tutti i suggerimenti sopra, ma niente ha funzionato. Alla fine ho eliminato sia la cartella .m2 che .ivy e ha funzionato per me.


-6
  1. cd ~/.m2
  2. git init
  3. git commit -am "some comments"
  4. cd /path/to/your/project
  5. mvn install
  6. cd ~/.m2
  7. git reset --hard

5
Questa risposta potrebbe o non potrebbe risolvere il problema, ma che ne dici di aggiungere qualche spiegazione alla tua risposta, questo potrebbe solo aiutare l'OP a capire cosa stai cercando di mostrargli.
Gerhard

2
Questa risposta non è correlata al problema: mostri la configurazione del repository git nella cartella .m2 e reimposta come repository git.
lquitadamo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.