2013-03-12 8 views
87
mvn install:install-file -Dfile=phonegap-1.1.0.jar -DgroupId?=phonegap -DartifactId?=phonegap -Dversion=1.1.0 -Dpackaging=jar 

Uso il comando precedente per installare il jar locale nel repository locale Maven. Ora ho la dipendenza da repository Maven. Voglio rimuoverlo dal repository locale. Come pulirlo?Come rimuovere il file jar dal repository maven locale che è stato aggiunto con install: install-file?

+0

Possibile duplicato di [Come rimuovere gli artefatti dei progetti dal repository locale dei servizi?] (Https://stackoverflow.com/questions/14631882/how-to-remove-a-projects-artifacts-from-the- local-maven-repo) – acm

risposta

76

Mentre è possibile eseguire un comando Maven, è più semplice eliminare i file manualmente dal repository.

come non sulle finestre Documents and Settings\your username\.m2 o $home/.m2 su Linux

+5

Cancellerei solo la directory '.m2/repository'. Un collega ha già cancellato la directory .m2 e causa problemi perché sul nostro progetto dobbiamo modificare il file 'settings.xml'. – Tiris

+4

Si noti che con l'eliminazione della directory '.m2/repository' si elimineranno anche tutti i file plugin di Maven. Mentre usando il comando 'purge-local-repository' stai cancellando solo le dipendenze. – collinhaines

+1

La struttura della directory in '.m2/repository' è organizzata dall'ID del gruppo Maven, quindi è sufficiente eliminare la sottodirectory corrispondente alla risorsa che si desidera rimuovere. –

7

Eliminare tutte le voci (jar, pom.xml, ecc.) Nella directory locale ~/.m2/repository/phonegap/1.1.0/ se si utilizza un sistema operativo Linux.

+0

Quando rimuovo il vaso in questo modo, "ri-scarica" ​​il jar dalla vecchia cartella. Possono esserci anche riferimenti che devono essere rimossi. –

90

Anche se l'eliminazione di file manualmente funziona, c'è un ufficiale modo di rimuovere dipendenze del vostro progetto dalla tua (cache) repository locale e opzionalmente ri-risolvere da repository remoti.

L'obiettivo purge-local-repository, sul plug-in standard di dipendenza Maven, rimuoverà le dipendenze installate localmente di questo progetto dalla cache. Opzionalmente, puoi ri-risolverli dai repository remoti allo stesso tempo.

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

Se si desidera rimuovere esplicitamente un singolo artefatto dalla cache, utilizzare purge-local-repository con il parametro manualInclude. Ad esempio, dalla riga di comando:

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

La documentazione implica che questo non rimuove le dipendenze transitive di default. Se si utilizza una posizione cache non standard o su più piattaforme, queste sono più affidabili dell'eliminazione dei file "a mano".

La documentazione completa è nella specifica maven-dependency-plugin.

Nota: Più versioni del plugin Maven dependency aveva un obiettivo manual-purge-local-repository, che è ora (versione 2.8) implicita mediante l'uso di manualInclude. Anche la documentazione per manualIncludes (con un s) deve essere letta.

+0

Non credo che funzioni per '.jar's che non sono stati scaricati da maven central o da qualche altro repository. Quando eseguo questo comando si sbarazza di tutti i '.jar' che vengono scaricati automaticamente, ma quando arriva al' .jar's che ho installato manualmente, emette questo messaggio di errore: '[ERROR] Failed per eseguire l'obiettivo org.apache.maven.plugins: maven-dependency-plug-in: 2.8: purge-local-repository (default-cli) sul generatore di lega del progetto: Impossibile aggiornare le dipendenze del progetto per: myartifact: manufatti richiesti mancanti: [ ERRORE] scaricato manualmente e installato.jar ... ' – stiemannkj1

+3

In realtà, dopo averlo controllato, ho realizzato che disinstalla il file' .jar', ma genera comunque un errore. Quindi per '.jar's che sono stati installati manualmente, ti consiglio di eliminare manualmente piuttosto che usare questo metodo, perché maven crea alcuni file strani come' yourjar.jar.lastUpdated' e 'yourjar.pom.lastUpdated' di cui potresti aver bisogno per cancellare manualmente comunque. Ma se Maven ha gestito automaticamente tutte le dipendenze, questo è un ottimo modo per disinstallare le dipendenze. – stiemannkj1

+0

Questo approccio richiede anche un progetto maven per eseguire il comando. Questo non sembra funzionare se hai eseguito il comando install che l'OP ha specificato nel contesto di dire una build Gradle. – jdonmoyer

9

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

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

rimuove le dipendenze senza scaricarle nuovamente.

0
  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
+1

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

Problemi correlati