我刚刚检查了一些项目并且需要构建它们,但是我很久以前安装了Maven(可能是6个月?)而且确实没有't used it since - the pom.xml for the project I have doesn'在其中的任何地方都有“http://repo1.maven.org/myurlhere” - 它有绝对的网址,其中maven repo是对于该项目,但maven仍在尝试从普通的maven回购下载:
Macintosh:trunk$ mvn clean install
[INFO] Scanning for projects...
Downloading: http://repo1.maven.org/url/project/project/x.x/project-x.x.pom
[INFO] Unable to find resource 'url.project:project:pom:x.x' in repository central (http://repo1.maven.org/)
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
GroupId: url.project
ArtifactId: project
Version: x.x
Reason: Unable to download the artifact from any repository
url.project:project:pom:x.x
from the specified remote repositories:
central (http://repo1.maven.org/)
任何人都可以帮助我做正确的事情,基本上我只是从命令行检查项目,cd-ed到目录并运行“mvn clean install” - 没有别的 . 任何帮助是极大的赞赏 .
4 回答
All 项目默认声明为
<repository>
(和<pluginRepository>
) . 此存储库称为中央存储库,与"Super POM"中的其他默认设置(所有项目都继承自Super POM)一样继承 . 所以POM实际上是Super POM,任何父POM和当前POM的组合 . 这个组合称为"effective POM",可以使用Maven帮助插件的effective-pom
目标打印(对调试很有用) .事实上,如果你跑:
你至少会看到以下内容:
Maven将尝试在声明的所有存储库中查找依赖项,包括在我们看到的默认存储区中 . 但是,根据您显示的跟踪,您只能定义 one 存储库(中央存储库)或maven将打印如下内容:
所以,基本上,maven无法找到
url.project:project:pom:x.x
,因为它在中央不可用 .但是,如果不知道您已检出哪个项目(可能有特定说明)或缺少哪个依赖项(可能在另一个存储库中找到),则无法进一步帮助您 .
默认情况下,Maven将始终查看官方Maven存储库,即http://repo1.maven.org .
当Maven尝试构建项目时,它将查找您的本地存储库(默认为
~/.m2/repository
,但您可以通过更改~/.m2/settings.xml
中的<localRepository>
值来配置它)以查找pom.xml
中定义的任何依赖项,插件或报告 . 如果在本地存储库中找不到足够的工件,它将查找配置的所有外部存储库,从默认存储库http://repo1.maven.org开始 .您可以通过在
settings.xml
文件中设置镜像来配置Maven以避免此默认存储库:这样,Maven将联系您的企业存储库(本例中为
http://the/server
),而不是联系http://repo1.maven.org
.如果要添加另一个存储库,可以在settings.xml文件中定义一个新存储库:
你可以看到完整的
settings.xml
模型here .关于
clean
进程,您可以要求Maven脱机运行它 . 在这种情况下,Maven不会尝试访问任何外部存储库:基本上,所有Maven都告诉您,项目中的某些依赖项在中央maven存储库中不可用 . 缺省情况是查看本地.m2文件夹(本地存储库),然后查看POM中的所有已配置存储库,然后查看中央maven存储库 . 查看Maven引用的存储库section .
问题是签入的项目没有以这样的方式配置POM,即可以找到所有依赖项并且可以从头开始构建项目 .
我想你在这里错过的是:
https://maven.apache.org/settings.html#Servers
这是使用自定义存储库的首选方式 . 所以可能发生的事情是这个repo的url位于构建服务器的settings.xml中 .
一旦你掌握了网址和凭据,就可以将它们放在你的机器中:
~/.m2/settings.xml
如下: