如何防止Maven每次都下载工件?

Dav*_*ave 44 dependencies dependency-management maven-3 maven

我正在使用Maven 3.1.1.在我的一个项目中,我引用了我的另一个项目......

    <dependencies>
            <dependency>
                    <groupId>org.mainco.subco</groupId>
                    <artifactId>myprojectA</artifactId>
                    <version>${project.version}</version>
            </dependency>
Run Code Online (Sandbox Code Playgroud)

以上内容取决于我的其他几个项目.但是,当我运行"mvn clean install"时,Maven会尝试下载这些工件而不是仅仅使用我本地存储库中的内容.如果我的本地存储库中不存在Maven,我如何让它只下载?这是我所看到的输出......

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]
Run Code Online (Sandbox Code Playgroud)

小智 73

如果您使用离线标志,它将使用本地仓库中的库.

mvn clean install -o 
Run Code Online (Sandbox Code Playgroud)

  • 这给了我一个错误:[ERROR] Plugin org.apache.maven.plugins:maven-install-plugin:2.4 或其依赖项之一无法解析:无法访问中央 (https://repo.maven.apache.org /maven2) 在离线模式下,并且工件 org.apache.maven.plugins:maven-install-plugin:jar:2.4 之前没有从它下载。 (3认同)
  • 有没有办法使这成为默认行为 - 换句话说,它会在出门到互联网之前先扫描本地回购? (2认同)

use*_*849 25

您可以通过在$USER_HOME/.m2/settings.xml文件中配置存储库来控制更新频率.具体而言,将updatePolicy更改为导致更新频率降低的值. 此Stackoverflow答案有更多细节.


Ian*_*ton 7

如果要更新一些罐子,但不是安装在本地的人,你应该使用的快照-nsu--no-snapshot-updates)标志,以防止Maven的从主存储库中获取最新的快照。使用-o它将阻止它从远程存储库中获取其他升级和(通常)必要的Maven jar。