use*_*163 62 java build-process maven-2 build
我刚检查了一些项目并需要构建它们,但是我很久以前安装了Maven(可能是6个月?)并且从那时起就没有使用它 - 我所拥有的项目的pom.xml没有这个" http://repo1.maven.org/myurlhere "在其中的任何地方 - 它有maven repo用于项目的绝对URL,但maven仍在尝试从普通的maven repo下载:
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/)
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我做正确的事情,基本上我只是从命令行检查项目,cd-ed到目录并运行"mvn clean install" - 没有别的.任何帮助是极大的赞赏.
Pas*_*ent 67
我所拥有的项目的pom.xml 在其中的任何地方都没有" http://repo1.maven.org/myurlhere "
默认情况下,所有项目都将http://repo1.maven.org/声明为<repository>
(和<pluginRepository>
).此存储库称为中央存储库,与"Super POM"中的其他默认设置(所有项目继承自Super POM)一样继承.所以POM实际上是Super POM,任何父POM和当前POM的组合.这种组合称为"有效POM",可以使用effective-pom
Maven帮助插件的目标打印(对调试很有用).
事实上,如果你跑:
mvn help:effective-pom
Run Code Online (Sandbox Code Playgroud)
你至少会看到以下内容:
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Maven Plugin Repository</name>
<url>http://repo1.maven.org/maven2</url>
</pluginRepository>
</pluginRepositories>
Run Code Online (Sandbox Code Playgroud)
它有maven repo用于项目的绝对URL,但是maven仍然试图从普通的maven repo下载
Maven将尝试找到在所有存储库的依赖宣布,包括中央一个是有默认情况下,我们所看到的.但是,根据您显示的跟踪,您只定义了一个存储库(中央存储库)或maven将打印如下内容:
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/),
another-repository (http://another/repository)
Run Code Online (Sandbox Code Playgroud)
所以,基本上,maven无法找到url.project:project:pom:x.x
它,因为它在中央不可用.
但是,如果不知道您已检出哪个项目(可能有特定说明)或缺少哪个依赖项(可能在另一个存储库中找到),则无法进一步帮助您.
Rom*_*las 30
默认情况下,Maven将始终查看官方Maven存储库,即http://repo1.maven.org.
当Maven尝试构建项目时,它将在您的本地存储库中查找(默认情况下~/.m2/repository
,您可以通过更改<localRepository>
您的值来配置它~/.m2/settings.xml
)以查找在您的中定义的任何依赖项,插件或报告pom.xml
.如果在本地存储库中找不到足够的工件,它将查找配置的所有外部存储库,从默认的存储库http://repo1.maven.org开始.
您可以通过在settings.xml
文件中设置镜像来配置Maven以避免此默认存储库:
<mirrors>
<mirror>
<id>repoMirror</id>
<name>Our mirror for Maven repository</name>
<url>http://the/server/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
Run Code Online (Sandbox Code Playgroud)
这样http://repo1.maven.org
,Maven将联系您的企业存储库(http://the/server
在此示例中),而不是联系.
如果要添加另一个存储库,可以在settings.xml文件中定义一个新存储库:
<profiles>
<profile>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>foo.bar</id>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<url>http://new/repository/server</url>
</repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)
你可以在这里看到完整的settings.xml
模型.
关于该clean
过程,您可以要求Maven 脱机运行它.在这种情况下,Maven不会尝试访问任何外部存储库:
mvn -o clean
Run Code Online (Sandbox Code Playgroud)
小智 5
tl;博士
所有 Maven POM 都继承自基础Super POM。
下面的代码片段是 Maven 3.5.4 的 Super POM 的一部分。
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
143217 次 |
最近记录: |