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

我正在使用 Maven3.1.1。在我的一个项目中,我引用了我的另一个项目..。

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

以上内容取决于我的其他几个项目。但是,当我运行“ 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]
105752 次浏览

如果您使用脱机标志,它将使用您的库从本地回购。

mvn clean install -o

中设置存储库

Setings.xml

你的安装文件。

Maven 配置网页上阅读更多关于它的信息。

您可以通过在 $USER_HOME/.m2/settings.xml文件中配置存储库来控制更新频率。具体来说,将 updatePolicy更改为一个导致更新频率降低的值。

这个 Stackoverflow 答案 有更多细节。

根据我的经验,一旦 Maven“决定”必须从特定的服务器下载文件,这些方法都不起作用。

另一个建议是配置 updatePolicy,但是为了成功,您应该转到本地存储库中的 jar 所在的文件夹,并删除名为“ _ maven.Repositories”的文件。删除所有以“。最后更新”。还有“ m2e-lastUpdated”。如果你正在使用 Eclipse 插件。

如果您想更新一些 jar,但不想更新本地安装的 jar 的快照,那么应该使用 ABC0(--no-snapshot-updates)标志来防止 Maven 从主存储库获取最新的快照。使用 -o将阻止它从远程存储库获取其他升级和(通常)必要的 maven jar。

我知道这听起来很荒谬; ——但是一种方法是将 maven 存储库的 DNS 条目设置为 localhost,这样就会100% 失败,因为主机无法解析。

/etc/hosts

# Comment this in/out as needed.
127.0.0.1 download.java.net

注意,如果不想使用 localhost,可以使用其中一个 IP 这里提到,例如 254.0.0.1。这些 IP 是为将来使用而保留的,因此是未使用的。