我的目标是生成同样可以从github内部浏览的站点文档,所以我编写了一堆标记页面。
我使用maven-site-plugin和doxia-module-markdown生成项目文档。
我遇到的问题是,表单[foo](foo.md)的链接在生成的<a href="foo.md">foo</a>中显示为<a href="foo.md">foo</a>,而不是<a href="foo.html">foo</a>。
将链接更改为指向foo.html将使.md无法浏览,在我看来,.md→.html映射对于HTML生成的工作方式是不可或缺的,因此应该在这里进行链接重写。
下面是repro的一个最小的例子,它为我提供了以下输出
我是否遗漏了一些配置选项来获得相对链接重写,以便也将源文件路径应用到目标文件路径转换?
翻译后的HTML包含.md链接。
$ mvn clean site && cat target/site/a.html | grep -i banana
...
<p>‘A’ is for apple, <a href="b.md">‘b’</a> is for banana.</p>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>
<groupId>foo</groupId>
<artifactId>bar</artifactId>
<packaging>jar</packaging>
<version>1-SNAPSHOT</version>
<name>Foo</name>
<description>
Tests link rewriting using the doxia markdown module.
</description>
<url>https://example.com/</url> <!-- should not affect relative URLs -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.5</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.doxia</groupId>
<artifactId>doxia-module-markdown</artifactId>
<version>1.7</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.8.1</version>
</plugin>
</plugins>
</build>
</project>site.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<project>
<skin>
<groupId>org.apache.maven.skins</groupId>
<artifactId>maven-fluido-skin</artifactId>
<version>1.5</version>
</skin>
<body>
<links>
</links>
<menu name="docs">
<item name="a" href="a.html"/>
<item name="b" href="b.html"/>
</menu>
<menu ref="reports"/>
<menu ref="modules"/>
<menu ref="parent"/>
</body>
</project>a.md
# A
'A' is for apple, ['b'](b.md) is for banana.b.md
# B
['A'](a.md) is for apple, 'b' is for banana.发布于 2017-01-22 06:53:06
markdown-page-generator-plugin提供了一个transformRelativeMarkdownLinks选项,该选项将将相对url后缀从".md“转换为".html”(如果选项为true )。(缺省值:false。)
设置:
doxia-module-markdown在/src/site/markdown/中处理的标记文件放在markdown-page-generator-plugin处理的标记文件放在一个名不同的文件夹中,例如/src/site/markdown_/doxia-module-markdown添加的html代码放入header.html和footer.html中markdown-page-generator-plugin以包括header.html和footer.htmlmarkdown-page-generator-plugin以将已处理文件添加到doxia-module-markdown使用的相同目标文件夹中适应pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.6</version>
<dependencies>
<!-- processes ${project.basedir}/src/site/markdown/ -->
<dependency>
<groupId>org.apache.maven.doxia</groupId>
<artifactId>doxia-module-markdown</artifactId>
<version>1.7</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>com.ruleoftech</groupId>
<artifactId>markdown-page-generator-plugin</artifactId>
<version>0.10</version>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<inputDirectory>${project.basedir}/src/site/markdown_/</inputDirectory>
<outputDirectory>${project.build.directory}/site/</outputDirectory>
<!-- copy other /markdown_/* directories -->
<copyDirectories>images_,quickstart_files</copyDirectories>
<!-- put doxia-module-markdown additional html in these header & footer files -->
<headerHtmlFile>${project.basedir}/src/site/markdown_/html/header.html</headerHtmlFile>
<footerHtmlFile>${project.basedir}/src/site/markdown_/html/footer.html</footerHtmlFile>
<!-- transform relative url suffix from ".md" to ".html" -->
<transformRelativeMarkdownLinks>true</transformRelativeMarkdownLinks>
<pegdownExtensions>ANCHORLINKS,HARDWRAPS,AUTOLINKS,TABLES,FENCED_CODE_BLOCKS</pegdownExtensions>
</configuration>
</plugin>更新:
Apache Markdown模块1.8被更新为将解析器从Pegdown切换到Flexmark。因此,在groupId com.ruleoftech中使用的标记生成器,artifactId下页生成器插件现在是Maven Doxia本身的一部分。
<dependency>
<groupId>org.apache.maven.doxia</groupId>
<artifactId>doxia-module-markdown</artifactId>
<version>1.8</version>
</dependency>注意:尽管Maven Doxia 1.8使用https://github.com/vsch/flexmark-java,但并不确定所有的flexmark-java特性都是通过Doxia提供的。如果Doxia没有出现所需的markdown-page-generator-plugin特性,那么Doxia仍然是处理Doxia上下文之外的标记内容的一种选择。
发布于 2016-04-29 08:21:54
如果您在服务器上承载您的文件,并且您可以访问您的网站目录,您可以尝试使用应该位于MD文件所在目录根目录的.htaccess文件。
在.htaccess中,添加以下内容:
RewriteEngine On
RewriteRule /(.*).md /$1.html如果您了解Regex,您会注意到RewriteRule正在捕获.md文件的名称并将其转换为.html。这适用于所有.md文件的请求,并且不编辑GitHub或远程服务器中的任何内容。有关详细信息,请检查这个职位如何使用.htaccess重写URL。
https://stackoverflow.com/questions/36708241
复制相似问题