How do I prevent Maven from downloading artifacts every time?

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]

Solution 1:

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

mvn clean install -o 

Solution 2:

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 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.