首页 > 解决方案 > Maven Asciidoctor 插件和外部图像目录

问题描述

我们有一个单一来源的结构来构建一些 AsciiDoc 文档。一些构建使用带有 AsciiDoctor 插件的 Maven;这是开发团队的要求。

但是我们需要一个共享图像目录(来自另一个构建的要求)。而且我们不想在存储库中使用符号链接,以便人们可以在 Windows 上进行本地构建。

我们现在的做法是在 pom.xml 中的 asciidoctor 插件配置中指向 imagesdir:

  <plugin>
    <groupId>org.asciidoctor</groupId>
    <artifactId>asciidoctor-maven-plugin</artifactId>
    <configuration>
      <imagesDir>${project.basedir}/../../_images</imagesDir>
    </configuration>
  </plugin>

虽然构建工作,但它无法将图像复制到target/generated-docs. 相反,图像在其现有位置被引用。

如何使 Maven 构建正确地复制这些图像并在 HTML 文件中引用生成的文档中的副本?我当然可以写一个后处理脚本,但是在 Maven 中一定有某种方法可以做到吗?

标签: mavenasciidocasciidoctor

解决方案


您可以使用资源插件复制所有图像。将此添加到您的构建中:

    <build>
        <resources>
            <resource>
                <directory>src/main/asciidoc/images</directory>
                <targetPath>../generated-docs/images</targetPath>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

请相应地调整文件夹名称。使用filteringset tofalse因为图像是二进制文件,您不希望 Maven 在这里进行替换。

根据您的设置,您可能不再需要imagesDir. imagesDir 将仅指定图像相对于创建的 HTML 文件的位置。因此,它应该始终是一个相对 URL。您的示例将包含一个绝对 URL。


推荐阅读