Плагин Maven Asciidoctor и каталог внешних изображений

У нас есть структура из одного источника для создания нескольких документов AsciiDoc. В некоторых сборках используется Maven с подключаемым модулем AsciiDoctor; это требование от разработчика.

Но нам нужен общий каталог изображений (требование из другой сборки). И мы не хотим использовать символические ссылки в репозитории, чтобы люди могли делать локальные сборки в Windows.

Как мы это делаем сейчас, указываем на imagesdir в конфигурации плагина asciidoctor в pom.xml:

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

Пока сборка работает, не получается скопировать образы в target/generated-docs . Вместо этого изображения ссылаются на их существующее место.

Как я могу заставить сборку Maven правильно копировать эти изображения и иметь ссылки в файле HTML на копию внутри сгенерированных документов? Я, конечно, мог бы написать скрипт постобработки, но должен же быть какой-то способ сделать это внутри Maven?..


person Mikhail Ramendik    schedule 07.09.2018    source источник


Ответы (1)


Вы можете использовать плагин ресурсов для копирования всех изображений. Добавьте это в свою сборку:

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

Пожалуйста, измените имена папок соответствующим образом. Используйте filtering, установленный на false, так как изображения являются двоичными файлами, и вы не хотите, чтобы Maven делал здесь замены.

В зависимости от ваших настроек вам может больше не понадобиться файл imagesDir. В imagesDir указывается только расположение изображений относительно созданного HTML-файла. Поэтому это всегда должен быть относительный URL. Ваш пример будет содержать абсолютный URL.

person ahus1    schedule 28.07.2019