How do I prevent Maven from downloading artifacts every time?

94,091

Solution 1

You may control the update frequency by configuring repositories in the $USER_HOME/.m2/settings.xml file. Specifically, change the updatePolicy to a value that results in less frequent updates.

This Stackoverflow answer has more detail.

Solution 2

If you use offline flag it will use your libraries from local repo.

mvn clean install -o 

Solution 3

If you want to update some jars but not the snapshots of locally installed ones you should use the -nsu (--no-snapshot-updates) flag to prevent Maven from fetching the latest snapshot from the main repository. Using -o will prevent it from fetching other upgrades and (often) essential maven jars from remote repositories.

Solution 4

In my experience, none of that works once maven has "decided" that it must download the file from an specific server.

Configure updatePolicy a other suggest, but in order to suceed, you should go to the folder inside the local repository where the jar is, and delete a file named "_maven.repositories". Delete also al files ending in ".lastUpdated". Also "m2e-lastUpdated.properties" if you are using eclipse plugin.

Share:
94,091
Dave
Author by

Dave

Updated on July 05, 2022

Comments

  • Dave
    Dave almost 2 years

    I’m using Maven 3.1.1. In one of my projects, I reference another one of my projects …

        <dependencies>
                <dependency>
                        <groupId>org.mainco.subco</groupId>
                        <artifactId>myprojectA</artifactId>
                        <version>${project.version}</version>
                </dependency>
    

    The above is dependent on a couple other of my projects. However, when I run “mvn clean install,” Maven attempts to download these artifacts instead of just using what’s in my local repository. How do I get Maven to only download things if they do not exist in my local repository? Here’s the output of what I’m seeing …

    davea$ mvn clean install
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building subco admin Module 57.0.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    Downloading: http://download.java.net/maven/2/org/mainco/subco/myprojectA/57.0.0-SNAPSHOT/maven-metadata.xml
    Downloading: http://download.java.net/maven/2/org/mainco/subco/subco/57.0.0-SNAPSHOT/maven-metadata.xml
    Downloading: http://download.java.net/maven/2/org/mainco/subco/projectB/57.0.0-SNAPSHOT/maven-metadata.xml
    Downloading: http://download.java.net/maven/2/org/mainco/subco/projectC/57.0.0-SNAPSHOT/maven-metadata.xml
    [INFO]
    
  • Dave
    Dave about 10 years
    Is there any way to make this the default behavior -- in other words, it will scan the local repos first before going out to the Internet?
  • khmarbaise
    khmarbaise about 10 years
    This is already the default. In this case you have SNAPSHOT's which will be checked every day (default).
  • user944849
    user944849 about 10 years
    Specifically, the updatePolicy value for each repository should be adjusted. From the sound of it, the value is currently 'always', you probably want to set it to something that results in less frequent updates.
  • Dave
    Dave about 10 years
    Yeah that updatePolicy seems to be what was causing it. If you want to create an answer to that effect, I'll accept it.
  • Stepan Yakovenko
    Stepan Yakovenko over 5 years
    This gives me an error: [ERROR] Plugin org.apache.maven.plugins:maven-install-plugin:2.4 or one of its dependencies could not be resolved: Cannot access central (repo.maven.apache.org/maven2) in offline mode and the artifact org.apache.maven.plugins:maven-install-plugin:jar:2.4 has not been downloaded from it before.
  • Svilen
    Svilen over 2 years
    Just to add that default update policy is 1 day (for SNAPSHOT versions). Cite from Maven configuration page: updatePolicy: This element specifies how often updates should attempt to occur. Maven will compare the local POM’s timestamp (stored in a repository’s maven-metadata file) to the remote. The choices are: always, daily (default), interval:X (where X is an integer in minutes) or never.
  • mmo
    mmo over 2 years
    This did the trick for me! Our project has one oracle jdbc lib that isn't available from Central but has to be downloaded from the Oracle website (thereby acknowledging their license) and which has to be put into the local repo. But Maven insisted on downloading this thing until I removed all the mentioned files (which had been created when using the same lib for a different project). After that the build finally continued and succeeded.
  • Brain
    Brain almost 2 years
    Maven actually checks for SNAPHOT's every time it builds, not just every day