📌 方案一:在项目POM文件中配置
这是最直接的方法,在你项目的pom.xml文件中添加<repositories>部分:
XML
<project>
...
<repositories>
<!-- 配置私有仓库 -->
<repository>
<id>my-private-repo</id> <!-- 此ID需唯一 -->
<name>Company Private Repository</name>
<url>http://your-private-repo.com/repository/maven-group/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled> <!-- 如果需要快照版本则开启 -->
</snapshots>
</repository>
<!-- 可选的:显式配置阿里云仓库,确保其被使用 -->
<repository>
<id>aliyun</id>
<url>https://maven.aliyun.com/repository/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
...
</project>
配置逻辑:Maven会按顺序在这些仓库中查找依赖。通常建议将私有仓库放在前面,优先查找。
⚙️ 方案二:在settings.xml中配置多仓库(推荐)
如果你想为所有项目全局配置,可以修改Maven的settings.xml文件(通常位于MAVEN_HOME/conf/或~/.m2/目录下)。
使用<profiles>定义仓库:
在<profiles>节点下添加一个配置档,将私有仓库和阿里云仓库都配置进去
XML
<settings>
...
<profiles>
<profile>
<id>custom-repositories</id>
<repositories>
<!-- 私有仓库 -->
<repository>
<id>my-private-repo</id>
<name>Private Repository</name>
<url>http://your-private-repo.com/repository/maven-group/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<!-- 阿里云仓库 -->
<repository>
<id>aliyun</id>
<url>https://maven.aliyun.com/repository/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
...
</settings>
激活配置档:
在<activeProfiles>节点中激活刚才定义的配置档
XML
<settings>
...
<activeProfiles>
<activeProfile>custom-repositories</activeProfile>
</activeProfiles>
</settings>
🔄 调整镜像设置(关键步骤)
如果你的settings.xml中已经有一个镜像配置,其<mirrorOf>设置为*或central,它会拦截所有仓库请求并重定向到阿里云,导致私有仓库配置失效。
解决方案是修改镜像规则,使其不拦截对私有仓库的请求。将原来的可能配置:
XML
<mirror>
<id>aliyun</id>
<mirrorOf>*</mirrorOf> <!-- 这会拦截所有仓库 -->
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
修改为:
XML
<mirror>
<id>aliyun</id>
<mirrorOf>central,!my-private-repo</mirrorOf> <!-- 不镜像名为 my-private-repo 的仓库 -->
<name>Aliyun Mirror</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
这里的!my-private-repo表示排除ID为my-private-repo的仓库。你也可以设置<mirrorOf>external:*,!my-private-repo</mirrorOf>等规则
🔐 配置私有仓库认证(如需要)
如果私有仓库需要用户名和密码,请在settings.xml的<servers>节点下配置认证信息
XML
<settings>
...
<servers>
<server>
<id>my-private-repo</id> <!-- 此ID必须与仓库配置中的ID完全一致 -->
<username>你的用户名</username>
<password>你的密码</password>
</server>
</servers>
...
</settings>
💎 总结与验证
-
首选方案 :建议采用方案二(修改
settings.xml),并检查调整镜像规则,这是一劳永逸的办法。 -
核心要点 :确保私有仓库的
<id>在<repository>、<server>(如果需要认证)以及<mirrorOf>排除规则中保持一致。 -
验证配置 :配置完成后,可以使用
mvn dependency:resolve -X命令执行依赖解析并开启详细日志输出。在输出信息中搜索你的私有仓库ID和依赖包名,确认Maven是否从正确的仓库下载。