使用Maven Site Plugin时Markdown资源链接路径不一致问题求助
解决Maven Site Plugin中Markdown资源链接的源码预览与生成后一致性问题
方案1:调整资源存放目录(最直接省心)
把src/site/resources/FER整个移到src/site/markdown/FER下面。这样:
- 写Markdown时,图片链接直接用
,本地编辑器预览能直接加载图片(资源和MD文件在同一父目录的子文件夹里); - 插件编译时,会把
src/site/markdown下的所有内容(包括FER子目录)直接输出到站点根目录,生成的HTML里链接还是./FER/01_homeScreen.png,完美匹配目标路径。
方案2:用站点根相对路径(适合不想动目录的情况)
如果不想改目录结构,把资源链接改成以/开头的站点根相对路径:
- 生成后的站点里,链接会指向根目录下的
FER/01_homeScreen.png,完全符合插件的输出逻辑; - 本地预览时,部分编辑器(比如VS Code)可以把预览根目录设为
src/site,这样也能正常显示图片。
方案3:Maven属性动态替换(兼顾两种场景)
用Maven属性+资源过滤实现链接自适应:
- 在
pom.xml的<properties>里加一行:
<resource.path>../resources</resource.path>
- 配置Maven Site Plugin开启Markdown文件的过滤:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <version>4.0.0-M9</version> <configuration> <markdownPlugins> <plugin> <groupId>org.apache.maven.doxia</groupId> <artifactId>doxia-module-markdown</artifactId> <version>1.12.0</version> </plugin> </markdownPlugins> <resources> <resource> <directory>src/site/markdown</directory> <filtering>true</filtering> <includes> <include>**/*.md</include> </includes> </resource> </resources> </configuration> </plugin>
- Markdown里用属性写链接:
 - 编译站点时通过命令行覆盖属性,适配生成路径:
mvn site -Dresource.path=.
这样本地编辑时用../resources路径预览,编译时自动换成当前目录路径。
若以上方案都不满足需求
可以考虑向Apache Maven Site Plugin提交功能请求,建议添加对src/site/resources目录资源的相对链接自动转换逻辑(类似现在处理.md转.html的机制),让源码里的../resources/xxx链接在生成时自动转为./xxx。
内容的提问来源于stack exchange,提问作者user2609605
相关产品推荐
相关产品推荐

