Forzare il nuovo download della dipendenza dal rilascio utilizzando Maven


136

Sto lavorando a un progetto con dipendenza X. X, a sua volta, dipende da Y.

Includevo esplicitamente Y nel pom del mio progetto. Tuttavia, non è stato utilizzato e per rendere le cose più pulite, l'ho invece aggiunto al pom di X come dipendenza. X è contrassegnato come dipendenza dal rilascio.

Il problema è che dopo aver rimosso Y dal pom del mio progetto e averlo aggiunto al pom di X, il mio progetto non lo prende in considerazione mvn -U clean package. So che -U aggiorna le istantanee ma non le versioni.

Quindi, senza cancellare la directory ~ / .m2 / repository come posso forzare un nuovo download del pom di X? Inoltre, ho provato a correre dependency:purge-local-repositorye non ha funzionato neanche.


Hai taggato le domande come "maven-2". L'opzione -U è stata aggiunta in Maven 3 per risolvere questo problema. Suggerirei l'aggiornamento.
Mark O'Connor,

Solo dal punto di vista metodologico, se cambi Xil pom, allora dovrebbe costituire una nuova versione, anche se è solo una modifica del numero di patch: 1.3-> 1.3.1. Quindi, questo eliminerebbe questo problema sin dall'inizio.
jpaugh

Tuttavia, è ancora possibile avere problemi simili anche con le istantanee, quindi è bene avere delle risposte.
jpaugh,

Risposte:


166

Non è possibile far scaricare nuovamente le dipendenze da Maven, ma è possibile eliminare le dipendenze scaricate in modo errato utilizzando mvn dependency:purge-local-repository

Vedi: http://maven.apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html


11
Quel genere non è la stessa cosa?
Svish,

2
Non richiede l'accesso al file system, il che potrebbe costituire un problema se si stanno configurando solo lavori di compilazione (ad esempio per un sistema CI).
Oliver Drotbohm,

2
Se vengono eseguiti più progetti mvn dependency:purge-local-repository clean package, è possibile che un progetto elimini la stessa dipendenza nel repository locale mentre un altro progetto esegue la compilazione. Come evitare?
Vikyd,

55

Ho appena cancellato il mio ~ / .m2 / repository e questo ha costretto un nuovo download;)


1
Aiuta come ultima risorsa, ho avuto un progetto in cui eclissi e maven erano un po '"confusi". La semplice eliminazione della cartella .m2 ha fatto compilare il progetto ed eseguirlo correttamente.
Leonardo,

5
È anche possibile eliminare in modo selettivo le dipendenze che è necessario aggiornare all'interno del repository. Una purga manuale, se vuoi.
jpaugh,

41

Penso che il seguente comando possa aiutarti!


mvn -U clean install

4
rilasciare la dipendenza usando Maven nella domanda. No, potrebbe essere meglio un commento.
Naman,

31

Grazie alla risposta di Ali Tokmen. Sono riuscito a forzare l'eliminazione della dipendenza locale specifica con il seguente comando:

mvn dependency:purge-local-repository -DmanualInclude=com.skyfish:utils

Con questo, rimuove utilsdal mio .m2 / repository e scarica sempre la utilsdipendenza JAR quando corro mvn clean install.


1
Avevo semplicemente bisogno di un modo per forzare Maven a scaricare nuovamente una dipendenza. Questa è l'unica risposta che lo fa effettivamente, mentre altre risposte suggeriscono di rimuovere tutto. Grazie
smac89,

14

Progetto fare clic con il pulsante destro del mouse-> Maven -> Aggiorna progetto e selezionare le caselle di controllo come nella schermata. Aggiornerà anche le versioni :)

inserisci qui la descrizione dell'immagine


5
Sarebbe bello sapere come hanno implementato quella parte "/ Release".
Ulises Layera,

Grazie per questo proprio quello di cui avevo bisogno.
JamesG

12
mvn clean install -U

-U significa forzare l'aggiornamento delle dipendenze.

Se si desidera aggiornare una singola dipendenza senza clean o -U, è possibile rimuoverla dal repository locale e quindi creare.


Ancora una volta, questo scarica nuovamente le dipendenze SNAPSHOT.
Zardoz89,

6

Quando l'hai aggiunto a X, dovresti aver incrementato il numero di versione di X, ovvero X-1.2,
quindi X-1.2 dovrebbe essere stato installato / distribuito e dovresti aver modificato la dipendenza dei tuoi progetti da X per dipendere dalla nuova versione X-1.2


6

Se conosci l'ID gruppo di X, puoi usare questo comando per scaricare di nuovo tutte le Xsue dipendenze

mvn clean dependency:purge-local-repository -DresolutionFuzziness=org.id.of.x

Fa la stessa cosa delle altre risposte che propongono di utilizzare dependency:purge-local-repository, ma elimina e scarica di nuovo tutto ciò a cui è correlato X.


4

Se vuoi davvero scaricare forzatamente tutte le dipendenze, puoi provare a reinizializzare l'intero repository di Maven. Come in questo articolo già descritto, è possibile utilizzare:

mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install

3

Basta eliminare ~ / .m2 / repository ..... / actual_path dove sta arrivando il LOC non valido in quanto forza a scaricare nuovamente i file jar eliminati. Non eliminare l'intera cartella del repository, invece elimina la cartella specifica da cui proviene l'errore.


0

L'eliminazione di ~/.m2/repositoryrisolverà il tuo problema. Ma se hai ancora bisogno di mantenere il vecchio~/.m2/repository , puoi semplicemente cambiare temporaneamente il percorso locale del Maven.

Se stai lavorando su IntelliJ, vai su Impostazioni Maven e modifica il percorso del repository locale in un altro posto. Potrebbe essere necessario spuntare la casella di controllo override lì vicino.

inserisci qui la descrizione dell'immagine


-1

La maggior parte delle risposte fornite sopra risolverebbe il problema.

Ma se usi IntelliJ e vuoi che lo aggiusti automaticamente, vai su Impostazioni Maven.

Build, Execution, Deployment -> Build Tools -> Maven

inserisci qui la descrizione dell'immagine

Disabilita il lavoro offline

Abilita Aggiorna sempre gli snapshot (Cambia quando richiesto)


1
Gradirei se puoi anche condividere il motivo del downvote mentre ci sei. Grazie.
Abhishek Nandgaonkar,

1
Presumibilmente, poiché le istantanee non sono versioni, questo non risolve il problema.
soru

-2

Vai al percorso di costruzione ... elimina la libreria maven esistente che hai aggiunto ... fai clic su aggiungi libreria ... fai clic su dipendenze gestite maven ... quindi fai clic su impostazioni progetto maven ... seleziona la casella di controllo risolvi dipendenze maven ... scaricherà tutto dipendenze maven


2
Questo presuppone l'uso di alcuni IDE, un presupposto non supportato dalla domanda, e non hai nemmeno specificato quale IDE!
Phil
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.