Cannot resolve plugin org.apache.maven.plugins:maven-site-plugin:3.1.0
IDEA上构建scala版本的Flink项目,使用maven编译打包,报如下错误:
Cannot resolve plugin org.apache.maven.plugins:maven-site-plugin:3.1.0
出现这类错误,通常是因为 Maven 无法从配置的仓库中获取到指定版本的 maven-site-plugin
,可能是仓库配置缺失、版本兼容性问题或网络问题导致。以下是具体解决步骤:
1. 检查 Maven 仓库配置(核心原因)
maven-site-plugin
属于 Maven 官方插件,默认应从 Maven 中央仓库获取。首先确认项目的 pom.xml
或 Maven 全局配置(settings.xml
)中包含中央仓库:
步骤1.1:检查项目 pom.xml
中的仓库配置
在 pom.xml
的 <repositories>
标签中,确保添加了 Maven 中央仓库(若缺失则补充):
<repositories><!-- Maven 中央仓库,用于获取官方插件和依赖 --><repository><id>central</id><name>Maven Central Repository</name><url>https://repo1.maven.org/maven2</url><releases><enabled>true</enabled></releases></repository><!-- Flink 官方仓库(Scala 项目需额外配置,避免依赖缺失) --><repository><id>apache.snapshots</id><name>Apache Development Snapshot Repository</name><url>https://repository.apache.org/content/repositories/snapshots/</url><releases><enabled>false</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository>
</repositories><!-- 插件仓库(确保插件能从中央仓库获取) -->
<pluginRepositories><pluginRepository><id>central</id><name>Maven Central Repository</name><url>https://repo1.maven.org/maven2</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository>
</pluginRepositories>
2. 显式指定插件版本(解决版本兼容性)
若默认版本(3.1.0)存在兼容性问题,可在 pom.xml
的 <build>
-> <plugins>
中显式指定 更高且稳定的版本(如 3.12.1,Maven 官方推荐版本),覆盖默认版本:
<build><plugins><!-- 其他插件(如 Scala 编译插件、Flink 插件) --><plugin><groupId>org.scala-tools</groupId><artifactId>maven-scala-plugin</artifactId><version>2.15.2</version> <!-- Scala 项目必备编译插件 --><executions><execution><goals><goal>compile</goal><goal>testCompile</goal></goals></execution></executions></plugin><!-- 显式配置 maven-site-plugin,指定稳定版本 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-site-plugin</artifactId><!-- 推荐使用 3.12.1(兼容 Maven 3.6+,避免旧版本依赖缺失) --><version>3.12.1</version></plugin></plugins>
</build>
3. 清理 Maven 缓存并重新加载(解决本地缓存损坏)
若本地 Maven 仓库中该插件的缓存文件损坏,会导致无法解析,需清理缓存并重新下载:
步骤3.1:清理 IDEA 中的 Maven 缓存
- 打开 IDEA,点击右侧 Maven 面板(若未显示,可通过
View -> Tool Windows -> Maven
调出); - 在 Maven 面板中,点击 刷新按钮(🔄)旁的下拉菜单,选择 Clean(清理项目编译产物);
- 再选择 Invalidate Caches…(IDEA 顶部菜单栏
File -> Invalidate Caches...
),勾选 Clear file system cache and local history,点击 Invalidate and Restart 重启 IDEA。
步骤3.2:手动删除本地仓库中的插件缓存
- 找到本地 Maven 仓库路径(默认是
C:\Users\你的用户名\.m2\repository
或 Linux/macOS 的~/.m2/repository
); - 进入路径
org/apache/maven/plugins/maven-site-plugin/
,删除所有以3.1.0
或其他版本命名的文件夹; - 回到 IDEA,右键点击项目 -> Maven -> Reimport,重新下载插件。
4. 检查网络与代理(解决网络访问问题)
若处于公司内网或使用代理,可能会屏蔽 Maven 中央仓库的访问:
- 确认网络可正常访问
https://repo1.maven.org/maven2
(可通过浏览器打开链接测试); - 若使用代理,需在 Maven 全局配置文件
settings.xml
(路径:Maven安装目录/conf/settings.xml
或~/.m2/settings.xml
)中配置代理:<proxies><proxy><id>example-proxy</id><active>true</active><protocol>http</protocol><host>代理服务器地址</host><port>代理端口</port><!-- 若代理需要认证,补充以下配置 --><username>代理用户名</username><password>代理密码</password><nonProxyHosts>localhost|127.0.0.1</nonProxyHosts></proxy> </proxies>
5. 验证 Flink 与 Scala 版本兼容性(避免间接依赖冲突)
Scala 版本的 Flink 项目对依赖版本敏感,需确保 Flink 版本与 Scala 版本匹配(如 Flink 1.17 对应 Scala 2.12/2.13),且 pom.xml
中 Flink 依赖的 scope
配置正确(避免 provided
范围导致编译期依赖缺失):
<dependencies><!-- Flink Scala API 依赖(需与 Scala 版本匹配,如 2.12) --><dependency><groupId>org.apache.flink</groupId><artifactId>flink-scala_2.12</artifactId><version>1.17.0</version> <!-- 选择稳定的 Flink 版本 --><!-- 编译期依赖,打包时排除(Flink 集群已提供) --><scope>provided</scope></dependency><!-- Flink 流处理依赖 --><dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-scala_2.12</artifactId><version>1.17.0</version><scope>provided</scope></dependency>
</dependencies>
解决流程总结
- 优先补充 Maven 中央仓库和插件仓库配置;
- 显式指定
maven-site-plugin
的稳定版本(如 3.12.1); - 清理缓存并重新加载 Maven 项目;
- 检查网络/代理,确保仓库可访问;
- 验证 Flink 与 Scala 版本兼容性。
完成以上步骤后,再次执行 mvn clean package
即可正常编译打包 Scala 版本的 Flink 项目。