it-swarm.it

Come si cancella il cache di Apache Maven?

Recentemente, Apache Maven sembra avere problemi di memorizzazione nella cache. L'esecuzione di installazioni pulite sui nostri progetti utilizzando Windows Vista o Windows 7 a volte genera artefatti con gli stessi dati di una build precedente anche se i file del nuovo artefatto avrebbero dovuto essere aggiornati.

C'è un modo per cancellare questa cache per costringere Maven ad attivare sempre una build pulita del manufatto locale che dovrebbe essere costruito?

In particolare, stiamo riscontrando problemi nella creazione di una webapp con il plugin war. La versione di Maven è 3.0.3. La versione del plugin War è 2.1.1.

174
MetroidFan2002

Elimina le risorse (o il repository locale completo) da c:\Users\<username>\.m2\repository a mano.

187
palacsint

Per pulire la cache locale, provare a utilizzare il plug-in delle dipendenze.

  1. mvn dependency:purge-local-repository: questo è un tentativo di eliminare i file del repository locale, ma va sempre e riempie il repository locale dopo che le cose sono state rimosse.
  2. mvn dependency:purge-local-repository -DreResolve=false: questo evita la ri-risoluzione delle dipendenze, ma a volte sembra andare in rete.
  3. mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false: questo è stato aggiunto da Paweł Prażak e sembra funzionare bene. Userei il terzo se si desidera che il repository locale venga svuotato, e il primo se si vuole solo eliminare il repository locale e ottenere nuovamente le dipendenze.
153
Brian C.

Hai controllato/cambiato le impostazioni updatePolicy per i tuoi repository nel tuo settings.xml .

Questo elemento specifica la frequenza con cui gli aggiornamenti devono tentare di verificarsi. Maven confronterà il timestamp locale del POM (memorizzato nel file maven-metadata di un repository) sul telecomando. Le scelte sono: sempre, ogni giorno (predefinito), intervallo: X (dove X è un numero intero in minuti) o mai.

Prova a impostarlo su always.

12
FrVaBe

Vorrei fare quanto segue:

mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false --fail-at-end

Le bandiere dicono a Maven di non provare a risolvere le dipendenze o di colpire la rete. Elimina ciò che vedi localmente.

E per buona misura, ignorare gli errori (--fail-at-end) fino alla fine. Questo è a volte utile per progetti che hanno un insieme di dipendenze un po 'incasinato o si basano su un repository interno un po' incasinato (succede).

8
luis.espinal

Funziona su Spring Tool Suite v 3.1.0.RELEASE, ma suppongo che sia disponibile anche su Eclipse.

Dopo aver eliminato manualmente gli artefatti (come indicato da palacsint sopra) nella directory /username/.m2, reindicizzare i file attenendosi alla seguente procedura:

Vai a Windows-> Preferenze-> Maven-> menu Impostazioni utente.

Fai clic sul pulsante "Reindex" accanto alla casella di testo "Local Repository". Fai clic su "Applica" e poi su "OK" e il gioco è fatto.

6
Felby

Come hanno sottolineato alcune risposte, a volte vuoi davvero eliminare il repository locale interamente, ad esempio, potrebbero esserci alcuni artefatti che non possono essere eliminati in quanto non sono più referenziati dal pom.

Se si desidera che questa cancellazione sia incorporata in una fase di preparazione, come ad esempio clean, è possibile utilizzare maven-clean-plugin e accedere al repository attraverso le impostazioni, ad esempio:

 <plugin>
    <inherited>false</inherited>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.1</version>
    <executions>
        <execution>
            <phase>clean</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <echo>Base clean is attached to deleting local maven cache</echo>
                    <echo>${settings.localRepository}</echo>
                </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>

<plugin>
    <inherited>false</inherited>
    <artifactId>maven-clean-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <filesets>
            <fileset>
                <directory>${settings.localRepository}</directory>
            </fileset>
        </filesets>
    </configuration>
</plugin>
2