Атрибут Asciidoctor «фрагменты» не найден из gradle

Я следую указаниям в справочном документе Spring Rest Docs в отношении конфигурации сборки. Но атрибут «фрагменты», похоже, не отображается для Asciidoctor, когда я пытаюсь сделать

include::{snippets}/....

но я получаю asciidoctor «предупреждение: удаление строки, содержащей ссылку на отсутствующий атрибут: фрагменты»

Если я удалю ссылку на атрибут и укажу путь напрямую, появится содержимое включенного файла.

Вот файл build.gradle, содержащий информацию Rest Docs/Asciidoctor:

buildscript {
    ext {
        springBootVersion = '1.3.0.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

plugins {
    id "org.asciidoctor.convert" version "1.5.3"
}


allprojects {
    apply plugin: 'groovy'
    apply plugin: 'idea'

    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    group = 'com....'

    ext {
        si = [version: '4.1.7.RELEASE']
        groovy = [version: '2.4.5']
        newRelic = [version: '3.13.0']
        jackson = [version: '2.6.2']
    }

    repositories {
        mavenCentral()
        maven {
            url "http://artifacts...."
        }
        maven {
            url "http://artifacts..../public-snapshots/"
        }
    }

    sourceSets {
        main {
            groovy {
                srcDirs = ['src/main/groovy']
            }
        }
    }

    test {
        include "**/*Test.*"
        exclude "**/*TestBase.*"
        exclude "**/*IntegrationTest.*"
    }

    configurations {
        all*.exclude group: 'org.eclipse.persistence'
        all*.exclude group: 'org.codehaus.jackson'
        all*.exclude group: 'org.slf4j', module: 'log4j-over-slf4j'
        all*.exclude group: 'log4j'
    }

    dependencies {
        compile "org.codehaus.groovy:groovy-all:${groovy.version}"
        compile "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:${jackson.version}"
        compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:${jackson.version}"
        compile 'org.mockito:mockito-core:+'
        testCompile 'org.springframework.restdocs:spring-restdocs-mockmvc:1.0.1.RELEASE'
    }

    task wrapper(type: Wrapper) {
        gradleVersion = '2.9'
    }
}

ext {
    snippetsDir = file('build/generated-snippets')
}

test {
    outputs.dir snippetsDir
}

asciidoctor {
    attributes 'snippets': snippetsDir
    inputs.dir snippetsDir
    dependsOn test
}

project(':...') {
    dependencies {
        compile project(':...')
    }
}

Спасибо.


person Les    schedule 16.12.2015    source источник
comment
Вы имели в виду, что плагин Asciidoctor должен быть применен и настроен во внешнем проекте? Интересно, атрибут не установлен, потому что папка build/generated-snippets не существует относительно этого проекта. Если это не так, запуск сборки с помощью --debug покажет вам выполняемую команду asciidoctor. Можете ли вы обновить вопрос с соответствующей частью вывода отладки?   -  person Andy Wilkinson    schedule 17.12.2015
comment
Изначально у меня были все записи, связанные с asciidoctor, в проекте build.gradle, и он все еще не работал, поэтому я переместил его в родительский. Я запустил сборку с --debug и не увидел никаких команд от asciidoctor - только строки, показывающие, что он нашел файл jar и версию, и что он получил, если из репозитория maven. Я также не нашел ссылок на «фрагменты» на случай, если что-то будет сгенерировано в этом отношении. Я также переместил «testCompile» в файл проекта gradle (затронутые тесты, выполняемые в проекте, когда он был на родительском уровне).   -  person Les    schedule 17.12.2015
comment
Какую команду вы выполнили? ./gradlew asciidoctor --debug должно помочь.   -  person Andy Wilkinson    schedule 18.12.2015


Ответы (1)


Вы можете добавить атрибут snippets в файл api-guide.adoc, который указывает путь к snippetsDir.

:snippets: ../../../build/generated-snippets
person xiaofeig    schedule 28.01.2018