Eclipse中Maven项目报Access denied无法读取的问题求助
问题描述
本地Maven项目在命令行执行mvn clean install可正常构建成功,但在Eclipse中始终报错「Could not read maven project (Access denied)」。
命令行构建成功日志
[INFO] --- maven-source-plugin:2.2.1:jar-no-fork (default) @ yeahgo-rest4php-service ---[INFO] Building jar: C:\work\java\git\yeahgo-rest4php\target\yeahgo-rest4php-service-2.6.4-SNAPSHOT-sources.jar[INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ yeahgo-rest4php-service ---[INFO] Not copying test resources[INFO] [INFO] --- maven-compiler-plugin:3.7.0:testCompile (default-testCompile) @ yeahgo-rest4php-service ---[INFO] Not compiling test sources[INFO] [INFO] --- maven-surefire-plugin:2.21.0:test (default-test) @ yeahgo-rest4php-service ---[INFO] Tests are skipped.[INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ yeahgo-rest4php-service ---[INFO] Building jar: C:\work\java\git\yeahgo-rest4php\target\yeahgo-rest4php-service-2.6.4-SNAPSHOT.jar[INFO] [INFO] --- spring-boot-maven-plugin:2.1.2.RELEASE:repackage (default) @ yeahgo-rest4php-service ---[INFO] Replacing main artifact with repackaged archive[INFO] [INFO] --- maven-install-plugin:2.4:install (default-install) @ yeahgo-rest4php-service ---[INFO] Installing C:\work\java\git\yeahgo-rest4php\target\yeahgo-rest4php-service-2.6.4-SNAPSHOT.jar to C:\work\java\repository\com\hznt\yeahgo-rest4php-service\2.6.4-SNAPSHOT\yeahgo-rest4php-service-2.6.4-SNAPSHOT.jar[INFO] Installing C:\work\java\git\yeahgo-rest4php\.flattened-pom.xml to C:\work\java\repository\com\hznt\yeahgo-rest4php-service\2.6.4-SNAPSHOT\yeahgo-rest4php-service-2.6.4-SNAPSHOT.pom[INFO] Installing C:\work\java\git\yeahgo-rest4php\target\yeahgo-rest4php-service-2.6.4-SNAPSHOT-sources.jar to C:\work\java\repository\com\hznt\yeahgo-rest4php-service\2.6.4-SNAPSHOT\yeahgo-rest4php-service-2.6.4-SNAPSHOT-sources.jar[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 9.769 s[INFO] Finished at: 2022-12-09T13:15:59+08:00[INFO] ------------------------------------------------------------------------
Eclipse错误日志详情
Description Resource Path Location TypeCould not read maven project (org.apache.maven.plugins:maven-jar-plugin:2.4:jar:default-jar:package)org.eclipse.core.runtime.CoreException: Could not read maven project at org.eclipse.m2e.core.internal.embedder.MavenImpl.lambda$3(MavenImpl.java:433) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:350) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:219) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:205) at org.eclipse.m2e.core.internal.embedder.MavenImpl.readProject(MavenImpl.java:424) at org.eclipse.m2e.mavenarchiver.internal.AbstractMavenArchiverConfigurator.lambda$4(AbstractMavenArchiverConfigurator.java:576) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:350) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:262) at org.eclipse.m2e.mavenarchiver.internal.AbstractMavenArchiverConfigurator.loadParentHierarchy(AbstractMavenArchiverConfigurator.java:568) at org.eclipse.m2e.mavenarchiver.internal.AbstractMavenArchiverConfigurator.generateManifest(AbstractMavenArchiverConfigurator.java:364) at org.eclipse.m2e.mavenarchiver.internal.AbstractMavenArchiverConfigurator.mavenProjectChanged(AbstractMavenArchiverConfigurator.java:227) at org.eclipse.m2e.mavenarchiver.internal.AbstractMavenArchiverConfigurator$1.build(AbstractMavenArchiverConfigurator.java:177) at org.eclipse.m2e.core.internal.builder.MavenBuilderImpl.build(MavenBuilderImpl.java:135) at org.eclipse.m2e.core.internal.builder.MavenBuilder$1.method(MavenBuilder.java:168) at org.eclipse.m2e.core.internal.builder.MavenBuilder$1.method(MavenBuilder.java:1) at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.lambda$1(MavenBuilder.java:113) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:350) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:219) at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.lambda$0(MavenBuilder.java:104) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:350) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:262) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:205) at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.execute(MavenBuilder.java:87) at org.eclipse.m2e.core.internal.builder.MavenBuilder.build(MavenBuilder.java:197) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:1024) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:254) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:311) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:400) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:403) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:514) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:462) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:544) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:161) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:255) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)Caused by: org.apache.maven.project.ProjectBuildingException: 1 problem was encountered while building the effective model[FATAL] Non-readable POM C:\work\java\git\yeahgo-rest4php: C:\work\java\git\yeahgo-rest4php (Access denied。) @ for project at C:\work\java\git\yeahgo-rest4php at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:180) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:124) at org.eclipse.m2e.core.internal.embedder.MavenImpl.lambda$3(MavenImpl.java:431) ... 36 moreCaused by: org.apache.maven.model.building.ModelBuildingException: 1 problem was encountered while building the effective model[FATAL] Non-readable POM C:\work\java\git\yeahgo-rest4php: C:\work\java\git\yeahgo-rest4php (Access denied。) @ at org.apache.maven.model.building.DefaultModelProblemCollector.newModelBuildingException(DefaultModelProblemCollector.java:197) at org.apache.maven.model.building.DefaultModelBuilder.readModel(DefaultModelBuilder.java:687) at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:303) at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:267) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:173) ... 38 more pom.xml /yeahgo-rest4php-service line 4 Maven Build Problem
项目pom.xml内容
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.hznt</groupId> <artifactId>yeahgo-dependencies-service</artifactId> <version>2.6.4-SNAPSHOT</version> <relativePath/> </parent> <artifactId>yeahgo-rest4php-service</artifactId> <version>${revision}</version> <properties> ... </properties> <dependencies> ... </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <!-- <version>3.3.0</version> change version, still same error--> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>flatten-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
已尝试的方法
- 在Eclipse中执行
Maven -> Update Project - 执行
Run as -> Maven clean - 删除Problems视图中的错误提示,但错误会重新出现
- 通过cmd执行
cacls yeahgo-rest4php /e /g everyone:f为目录授权 - 创建新目录Demo,复制src和pom.xml后导入Eclipse
解决方案
从错误堆栈来看,核心问题是Eclipse的m2e插件尝试读取项目目录C:\work\java\git\yeahgo-rest4php时触发权限拒绝,而命令行Maven可以正常执行,说明问题出在Eclipse或其集成的m2e插件上,尝试以下步骤:
切换Eclipse使用系统安装的Maven
打开Window > Preferences > Maven > Installations,点击Add选择本地安装的Maven目录,将其设置为默认,避免使用Eclipse内置的Maven版本。修复父POM的relativePath配置
pom.xml中parent的<relativePath/>为空,Maven会从本地仓库查找父POM,但m2e解析时可能出现路径混淆。如果父项目在本地,明确指定父POM的路径,例如:<parent> <groupId>com.hznt</groupId> <artifactId>yeahgo-dependencies-service</artifactId> <version>2.6.4-SNAPSHOT</version> <relativePath>../yeahgo-dependencies-service/pom.xml</relativePath> <!-- 根据实际路径调整 --> </parent>如果父POM已在本地仓库,可以保留空,但需确保Eclipse的Maven仓库与命令行一致(检查
Window > Preferences > Maven > User Settings中的settings.xml路径)。清理m2e插件缓存
关闭Eclipse,删除以下目录:{你的工作空间路径}/.metadata/.plugins/org.eclipse.m2e.core/nexus{你的工作空间路径}/.metadata/.plugins/org.eclipse.m2e.core/maven
重新启动Eclipse后执行Maven -> Update Project。
以管理员身份运行Eclipse
右键点击Eclipse快捷方式,选择「以管理员身份运行」,测试是否是系统权限限制导致无法读取目录。重新设置目录权限
尝试用icacls命令替换cacls,确保当前用户拥有完全控制权限:icacls C:\work\java\git\yeahgo-rest4php /grant %USERNAME%:(F) /T其中
/T参数会递归设置子目录和文件的权限。禁用自动构建后手动更新
取消勾选Project > Build Automatically,执行Maven > Update Project(勾选「Force Update of Snapshots/Releases」),完成后再重新开启自动构建。
内容的提问来源于stack exchange,提问作者Jason

