我正在使用Maven 3.1.1。在我的一个项目中,我引用了另一个项目......
<dependencies>
<dependency>
<groupId>org.mainco.subco</groupId>
<artifactId>myprojectA</artifactId>
<version>${project.version}</version>
</dependency>
以上内容取决于我的其他几个项目。但是,当我运行“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]
答案 0 :(得分:64)
如果您使用离线标记,它将使用本地仓库中的库。
mvn clean install -o
答案 1 :(得分:18)
您可以通过在$USER_HOME/.m2/settings.xml
文件中配置存储库来控制更新频率。具体而言,将updatePolicy
更改为导致更新频率降低的值。
This Stackoverflow answer有更详细的信息。
答案 2 :(得分:2)
如果要更新某些jar,但不更新本地安装的jar的快照,则应使用the -nsu
(--no-snapshot-updates
) flag来防止Maven从主存储库中获取最新的快照。使用>>> vars(C)['c']
'cla'
>>> vars(C)['b']
...
KeyError: 'b'
将阻止它从远程存储库中获取其他升级和(通常)必要的Maven jar。
答案 3 :(得分:1)
根据我的经验,一旦maven“决定”必须从特定服务器下载文件,这一切都无效。
配置updatePolicy是另一个建议,但为了成功,您应该转到jar所在的本地存储库内的文件夹,并删除名为“_maven.repositories”的文件。删除以“.lastUpdated”结尾的文件。如果您使用的是eclipse插件,也可以使用“m2e-lastUpdated.properties”。
答案 4 :(得分:0)
答案 5 :(得分:0)
我知道这听起来很荒谬;-)但是,一种方法是将Maven存储库的DNS条目设置为localhost,因为主机无法解析,所以它失败了100%。
# Comment this in/out as needed.
127.0.0.1 download.java.net
请注意,如果您不想使用本地主机,则可以使用IP mentioned here之一,例如254.0.0.1
。这些IP保留供将来使用,因此未使用。