我正在尝试在一个JSON项目中使用jackson。然而,Maven忽略了我的本地存储库(我已经从以前的项目中设置好了库),并从codehaus存储库下载。
问题是,我的工作场所已经阻止了对外部存储库的访问,因此我必须使用本地存储库。如何强制Maven首先查找本地存储库并使用其中的库?
提前感谢您的帮助。
问题是,我的工作场所已经阻止了对外部存储库的访问,因此我必须使用本地存储库。如何强制Maven首先查找本地存储库并使用其中的库?
提前感谢您的帮助。
Windows->Preferences->Maven->User Settings
,更改settings.xml和本地仓库路径。
如果这两者都正确设置,则应首先检查本地仓库。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不再在公共仓库中搜索我们内部发布的工件。它会查询我的本地仓库并在其中找到我们所有的发布版本。