Asciidoctor Maven Plugin生成的index.html无读取权限致构建失败
问题
使用asciidoctor-maven-plugin:2.2.2生成index.htm文件时触发构建错误,报错原因是生成的文件无读取权限。执行mvn clean install命令触发该问题,该命令在其他机器上可正常运行,但在M1 MacBook Pro上失败。已尝试更换Java版本(当前使用17 Zulu)和Maven版本(3.8.6),问题仍未解决。相关信息包括构建失败堆栈、文件权限情况、pom.xml插件配置。
解决方案
1. 显式指定输出目录并预设置权限
M1 Mac的系统权限策略可能导致默认输出目录权限异常,可在插件配置中指定输出目录,提前创建并赋予权限:
<plugin> <groupId>org.asciidoctor</groupId> <artifactId>asciidoctor-maven-plugin</artifactId> <version>2.2.2</version> <configuration> <outputDirectory>${project.build.directory}/generated-docs</outputDirectory> <!-- 保留原有其他配置 --> </configuration> </plugin>
构建前执行命令创建目录并设置权限:
mkdir -p target/generated-docs && chmod 755 target/generated-docs
2. 配置插件生成文件的权限
直接通过插件的permissions参数指定生成文件的权限,确保后续步骤可读取:
<plugin> <groupId>org.asciidoctor</groupId> <artifactId>asciidoctor-maven-plugin</artifactId> <version>2.2.2</version> <configuration> <!-- 原有配置 --> <permissions>644</permissions> </configuration> </plugin>
3. 强制设置Maven资源文件权限
通过maven-resources-plugin强制统一输出文件和目录的权限,避免权限继承问题:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.3.0</version> <configuration> <filePermissions>644</filePermissions> <directoryPermissions>755</directoryPermissions> </configuration> </plugin>
4. 检查终端的磁盘访问权限
确保运行Maven的终端应用拥有完全磁盘访问权限:
- 打开「系统设置」→「隐私与安全性」→「完全磁盘访问权限」
- 勾选对应的终端(如Terminal、iTerm),重启终端后重新执行
mvn clean install
内容的提问来源于stack exchange,提问作者Glup3
相关产品推荐
相关产品推荐

