Maven忽略本地存储库

6
我正在尝试在一个JSON项目中使用jackson。然而,Maven忽略了我的本地存储库(我已经从以前的项目中设置好了库),并从codehaus存储库下载。
问题是,我的工作场所已经阻止了对外部存储库的访问,因此我必须使用本地存储库。如何强制Maven首先查找本地存储库并使用其中的库?
提前感谢您的帮助。

这是默认的Maven行为。你能展示一下你的setting.xml的部分吗?你确定Maven正在读取正确的settings.xml吗? - Thomas
这是唯一没有注释的部分:<localRepository>C:/maven_repo</localRepository> - ebarbara
2个回答

4
请在eclipse中设置本地仓库路径,使其映射到您的本地仓库路径。 前往Windows->Preferences->Maven->User Settings,更改settings.xml和本地仓库路径。 如果这两者都正确设置,则应首先检查本地仓库。

已经设置好了,但在同一屏幕上我点击了重新索引按钮并且起作用了。谢谢。 - ebarbara

2
由于COVID-19的影响,我不得不将我的开发环境转移到外部。由于我们在办公室镜像了这些仓库,因此我的环境没有建立直接连接到各种公共仓库。然而,我的Maven仍然为我们内部发行版联系公共仓库。这很奇怪,因为我已经在本地仓库中拥有了我们的内部发行版。
解决方案是更新Maven配置,在settings.xml中定义配置文件:一个用于办公室,一个用于外部环境。在外部配置文件中,除了我们在办公室已经镜像的公共仓库之外,我还定义了一个与我们存储内部发行版的办公室服务器的名称、ID和URL完全匹配的仓库。这让Maven看到它正在寻找的库实际上来自那个仓库,并且不需要去寻找它,因为它已经在本地仓库中了。而且,即使Maven无法连接到办公室服务器,这也无所谓,它只需要被定义即可。 修改前:
Downloading from central: https://repo.maven.apache.org/maven2/com/mycompany/test-core/1.1.0/test-core-1.1.0.pom
Downloading from jboss-releases: https://repository.jboss.org/nexus/content/repositories/releases/com/mycompany/test-core/1.1.0/test-core-1.1.0.jar
Downloading from repository-apache-org: https://repository.apache.org/content/groups/public/com/mycompany/test-core/1.1.0/test-core-1.1.0.pom
[WARNING] The POM for com.mycompany:test-core:jar:1.1.0 is missing, no dependency information available

这是我们自己制作和发布的库,绝对不在Maven Central上。 Maven只是在四处寻找它 - 迷失了方向。

我在离线配置文件中定义了一个新的存储库,由于现有的公司防火墙规则,我的环境肯定无法连接到该存储库:

    <repository>
      <id>leroy-releases</id>
      <name>Development Release Repository</name>
      <url>http://leroyhost:8080/repository/maven-releases/</url>
      <layout>default</layout>
      <releases>
        <enabled>true</enabled>
        <updatePolicy>interval:15</updatePolicy>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>

请注意,profile部分包括其自己的repositories部分,在其中必须定义上面的repository部分。您还需要激活offsite配置文件:
<activeProfiles>
  <!--activeProfile>main-developer-profile</activeProfile-->
  <activeProfile>offsite-snapshots</activeProfile>
</activeProfiles>

我将其称为“配置文件快照”,因为在没有访问我们办公室存储库的情况下,没有人会在“现场”进行任何版本发布。

之后:

Maven不再在公共仓库中搜索我们内部发布的工件。它会查询我的本地仓库并在其中找到我们所有的发布版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接