【发布时间】:2014-03-24 15:52:56
【问题描述】:
在阅读完所有内容后,我根本无法得出结论,为了使用 maven 从我的档案存储库下载工件,必须在哪里以及为什么需要更改什么。
我在服务器上设置了档案,并试图运行一个简单的 maven 项目,该项目将在我的档案仓库中获取工件并下载它们。
我要更改哪些 settings.xml?服务器上的那个还是我的本地副本?
pom.xml 是否需要更改?
【问题讨论】:
在阅读完所有内容后,我根本无法得出结论,为了使用 maven 从我的档案存储库下载工件,必须在哪里以及为什么需要更改什么。
我在服务器上设置了档案,并试图运行一个简单的 maven 项目,该项目将在我的档案仓库中获取工件并下载它们。
我要更改哪些 settings.xml?服务器上的那个还是我的本地副本?
pom.xml 是否需要更改?
【问题讨论】:
您本地的~/.m2/settings.xml 文件(或Windows 下的%USERPROFILE%\.m2\setting.xml)。在那里你可以设置:
<mirrors>
<mirror>
<id>yourrepo-id</id>
<name>yourrepo-name</name>
<url>http://yourrepo/archiva</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
或者,您可以添加一个<profile/>,即<activeByDefault>true</activeByDefault>,然后在其中添加<repositories> / <pluginRepositories>。
<?xml version="1.0"?>
<settings>
<profiles>
<profile>
<id>add-repositories</id>
<activation>
<!-- Make the profile active by default -->
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<!-- Each repository should have and id -->
<id>snapshots</id>
<snapshots>
<!-- This repository contains snapshots and Maven should always check for the latest version -->
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
<releases>
<!-- No releases are stored here: only snapshots -->
<enabled>false</enabled>
</releases>
<!-- The URL -->
<url>http://yourrepo/snashots</url>
</repository>
<repository>
<!-- For releases -->
<id>releases</id>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
<url>http://yourrepo/releases</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>snapshots</id>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
<!-- The URL -->
<url>http://yourrepo/snashots</url>
</pluginRepository>
<pluginRepository>
<!-- For releases -->
<id>releases</id>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
<url>http://yourrepo/releases</url>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!-- mirrors, servers and other sections -->
</settings>
或者,您可以更改 pom.xml 并添加相应的 <repositories/> 和/或 <pluginRepositories/> 部分。
<project ...>
<repositories>
<repository>
<!-- Each repository should have and id -->
<id>snapshots</id>
<snapshots>
<!-- This repository contains snapshots and Maven should always check for the latest version -->
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
<releases>
<!-- No releases are stored here: only snapshots -->
<enabled>false</enabled>
</releases>
<!-- The URL -->
<url>http://yourrepo/snashots</url>
</repository>
<repository>
<!-- For releases -->
<id>releases</id>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
<url>http://yourrepo/releases</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>snapshots</id>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
<!-- The URL -->
<url>http://yourrepo/snashots</url>
</pluginRepository>
<pluginRepository>
<!-- For releases -->
<id>releases</id>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
<url>http://yourrepo/releases</url>
</pluginRepository>
</pluginRepositories>
</project>
【讨论】:
pom.xml 中的任何存储库 id,Maven 总是会首先用你的 mirrorOf 中的那个来覆盖它,如果可以的话如果没有在那里找到工件,它将回退到您的pom.xml 中定义的存储库,如果失败,它将尝试 Maven Central(作为最后的手段)。 2)什么文件? -- 工件总是下载到您的本地存储库。我假设你已经解决了 3)?