如何强制Maven从指定仓库下载插件所需的构件
问题根因
Maven的普通项目依赖仓库和插件仓库是两套完全独立的配置体系,你此前在pom中配置的<repositories>节点仅作用于项目的普通依赖,插件本身、插件内嵌依赖的拉取由专门的<pluginRepositories>节点控制,这就是你已经配置了私有仓但插件依赖还是走中央仓的核心原因。
解决方案
直接在pom.xml的<project>根节点下添加<pluginRepositories>配置,将你的私有Artifactory地址配置在最前面,即可实现插件及插件依赖优先从私有仓拉取:
<project> <!-- 你原有pom的其他配置,比如modelVersion、groupId、artifactId、普通repositories等 --> <pluginRepositories> <pluginRepository> <id>private-artifactory</id> <name>私有Artifactory仓库</name> <url>替换为你的私有Artifactory实际地址</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> <!-- 可按需调整快照版本的更新策略 --> <updatePolicy>always</updatePolicy> </snapshots> </pluginRepository> <!-- 如果你的私有仓已经代理了中央仓,可以删除下面的中央仓配置,所有插件依赖都只会走私有仓 --> <pluginRepository> <id>central</id> <name>Maven Central</name> <url>https://repo1.maven.org/maven2</url> </pluginRepository> </pluginRepositories> <!-- 你原有的build配置 --> <build> <!-- 原有maven-checkstyle-plugin等插件配置 --> </build> </project>
注意事项
- 仓库顺序决定查找优先级:
<pluginRepositories>下的节点按从上到下的顺序查找,私有仓配置越靠前优先级越高,找到对应构件后就不会继续往后查找。 - 你当前贴出的pom配置存在语法错误:
<sourceDirectory>${project.build.sourceDirectory</sourceDirectory>和<sourceDirectory>${project.build.testSourceDirectory</sourceDirectory>两处都缺少}闭合符,修正后才能正常运行。 - 验证方式:执行
mvn checkstyle:check -X查看运行日志,搜索自定义checkstyle构件的拉取地址,确认是否走私有Artifactory即可。
内容的提问来源于stack exchange,提问作者user3658886
相关产品推荐
相关产品推荐

