【问题标题】:Have Syntax Highlighting in Markdown for Maven Site (Fluido)在 Markdown for Maven Site (Fluido) 中突出显示语法
【发布时间】:2019-02-08 16:00:26
【问题描述】:

我在我的 Maven 项目中尝试了以下方法:

  • 添加带有内容的降价文件content.md
```java
int a = 4;
```

src/main/site/markdown.

  • 用内容写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.7</version>
      </skin>
      <body>
    
        <menu name="Dokumentation">
          <item name="Benutzerhandbuch" href="content.html" />
        </menu>
        <menu ref="reports" />
    
      </body>
    </project>
    
  • 写一个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>de.continentale.testsvn</groupId>
      <artifactId>site-test</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-site-plugin</artifactId>
            <version>3.7.1</version>
            <dependencies>
              <dependency>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-webdav-jackrabbit</artifactId>
                <version>2.6</version>
              </dependency>
              <dependency>
                <groupId>org.apache.maven.doxia</groupId>
                <artifactId>doxia-module-xhtml</artifactId>
                <version>1.8</version>
              </dependency>
              <dependency>
                <groupId>org.apache.maven.doxia</groupId>
                <artifactId>doxia-module-markdown</artifactId>
                <version>1.8</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
    
    </project>
    

现在我从mvn site 得到一个文件content.html。在此文件中,int a = 4not 语法突出显示。

我需要做什么才能获得语法高亮显示?

【问题讨论】:

    标签: maven syntax-highlighting maven-site-plugin doxia


    【解决方案1】:

    我也无法让它与 Maven 一起使用,但我找到了一种解决方法:使用 highligh.js 在 Javascript 中突出显示客户端。

    下载 highlight.js 并将其放在 src/site/resources/highlightjs.pack.js 下,以及 CSS 主题,例如src/site/resources/styles/atom-one-light.css.

    在您的网站描述符中:

    <project>
      <body>
        <head>
          <![CDATA[
          <link rel="stylesheet" href="styles/foundation.css" />
          <script src="highlight.pack.js"></script>
          <script>
              document.addEventListener('DOMContentLoaded', (event) => {
                document.querySelectorAll('pre.source').forEach((block) => {
                  hljs.highlightBlock(block);
                });
              });
          </script>
          ]]>
        </head>
      </body>
    </project>
    

    Maven 为代码块生成&lt;pre class="source" /&gt; 块,所以我们需要告诉highlight.js。不幸的是,Maven 没有放置与语言相对应的类名(在您的示例中为 Java),但 highlight.js 会自动检测语言,并且在大多数情况下都有效。

    【讨论】:

    • 我试过这个答案,但脚本没有出现在我的输出中。我添加了以下更改(针对maven-javadoc-plugin 3.1.1 版):&lt;additionalOptions&gt;&lt;additionalOption&gt;--allow-script-in-comments&lt;/additionalOption&gt; 而不是&lt;additionalparam&gt; (see here);将 {@docRoot}/ 添加到 href 的前面。仍然没有运气。构建站点不再有错误,但没有在 HTML 中注入代码。想法?