在我的pom.xml中升级依赖项后,我在尝试下载新工件时收到了以下错误(在本例中使用maven命令行mvn spall-start: run
)。
无法解析以下工件:io。github。bonigarcia:webdrivermanager:jar:3.8.1,org。zaproxy:zap clientapi:jar:1.7.0:找不到工件io。github。bonigarcia:webdrivermanager:jar:3.8.1Spring里程碑(https://repo.spring.io/milestone)
错误消息是正确的,该工件不存在于https://repo.spring.io/milestone.它确实存在于Maven central(https://repo.maven.apache.org/maven2)那么为什么Maven会在错误的存储库中寻找工件呢?
我知道这与我的Maven设置(settings.xml)有关,我在这里定义了一个到内部Nexus存储库的镜像。当我移除镜像时,Maven成功地在Maven central中查找并找到了工件。我不明白的是,当Nexus中不存在工件时,事情是如何工作的,以及为什么这个镜像设置会改变工件第一次被发现的方式。
来自设置。xml。。
<mirrors>
<mirror>
<id>Nexus</id>
<name>Nexus Public Mirror</name>
<url>https://myinternalnexushost.net/nexus/content/repositories/central</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
同样值得注意的是,这是一个Spring Boot项目。我没有在我的pom.xml中定义任何存储库,但是由于我指定了一个Spring Boot父pom,我继承了以下存储库:
来自Spring Boot父级pom
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>spring-milestone</id>
<name>Spring Milestone</name>
<url>https://repo.spring.io/milestone</url>
</repository>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>spring-snapshot</id>
<name>Spring Snapshot</name>
<url>https://repo.spring.io/snapshot</url>
</repository>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>rabbit-milestone</id>
<name>Rabbit Milestone</name>
<url>https://dl.bintray.com/rabbitmq/maven-milestones</url>
</repository>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
</repositories>
当您告诉Maven使用镜像时,该镜像将被用来代替原始存储库。
这意味着,当你镜像“中心”时,你将无法访问Maven central中不在该镜像中的任何内容。
通常在存储库
下定义回购协议,每个回购协议都有一个标识符。然后将此标识符用于镜像。在您的配置中,您可以镜像id为central
<mirrors>
<mirror>
<id>Nexus</id>
<name>Nexus Public Mirror</name>
<url>https://myinternalnexushost.net/nexus/content/repositories/central</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
作为回购协议https://repo.spring.io/
有另一个标识符,它没有使用中心
进行镜像。例如,你必须为彼此的回购协议定义镜像
<mirrors>
<mirror>
<id>Nexus</id>
<name>Nexus Public Mirror</name>
<url>https://myinternalnexushost.net/nexus/content/repositories/central</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>Spring</id>
<name>Nexus Public Mirror</name>
<url>https://myinternalnexushost.net/nexus/content/repositories/spring-milestone</url>
<mirrorOf>spring-milestone</mirrorOf>
</mirror>
</mirrors>
另见指南:
通过存储库,您可以指定要从哪个位置下载某些工件,如依赖项和maven-plugins。存储库可以在项目中声明,这意味着如果您有自己的自定义存储库,共享您项目的人可以轻松地从盒子里获得正确的设置。然而,您可能希望在不更改项目文件的情况下为特定存储库使用替代镜像。
我通常会做下面的事情,这会让事情更容易维护
然后你只需要在设置中指定这一点。xml
<mirrors>
<mirror>
<id>Nexus</id>
<name>Nexus Public Mirror</name>
<url>https://myinternalnexushost.net/nexus/content/repositories/maven-group</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
我有两个私人JFrog存储库设置。一个存储库处理发布,另一个处理快照。下面是我如何在我的设置中定义它的。xml文件。 我的多模块maven项目中的多个内部依赖项都收到了这个错误: 从外观上看,Maven似乎并没有试图联系官方的Maven Central repo以获取这些依赖项,而是在我的私有存储库上失败了。我的印象是,如果私有存储库不包含特定工件,它将尝试联系Maven Central。 从Ma
我已经将一个现有的manven项目导入到我从github下载的eclipse新工作区中。在maven安装中,我获得了构建成功,但该项目的红十字会从未成功过。这个问题以前已经提出过:link1,link2 大多数解决方案都是关于更新项目的,任何时候我做更新项目,都不能解决问题。 另一个解决方案是关于lombok插件,因为我注意到许多getter和setter方法都会导致问题(不存在)。lombok插
现在我正在尝试从git运行克隆应用程序https://github.com/frinder/frinder-app但问题是该应用程序制作了很长时间,所以应该改变bulid.gradle 但是当我尝试相同的同步实现“com.android.支持:动画矢量可绘制:28.0.0”,但如果我删除它,请继续向我显示错误28.0.0它显示如下 但我不知道是什么造成了不完全相同的版本 这是应用程序build.g
当使用Jenkins Freestyle项目时,我能够使用“Maven3-Artifactory集成”成功地运行Maven构建 当试图在pipeline中使用这个特性时,我遇到了从中央maven存储库中解析工件的问题。我的印象是,当Jenkins在artifactory中找不到工件时,它应该回到中央maven存储库https://repo . maven . Apache . org/maven
我有一个本地的artifactory存储库。我在应用程序的pom.xml中有一个依赖项,如下所示: 我在我的“ext-local-snapshot”存储库中部署了一个activequant-p2-1.3-snapshot.jar。Artifactory将其部署在org/activequant/activequant-p2/activequant-p2-1.3-20130925.170928.jar
问题内容: 我正在从事android问答游戏。QuestionActivity和EndgameActivity是我游戏中的2个类。我想将游戏的控制权转移到EndgameActivity。为此,我在QuestionActivty类中添加 在方法上。但是在回答了最后一个问题后,当我的游戏控制权没有转移到EndgameActivity时,日志猫显示了以下错误。 QuestionActivity课程- E