build.gradle

buildscript {
    ext {
        springBootVersion = '2.0.6.RELEASE'
        springRestDocsVersion = '2.0.2.RELEASE'
        gradleDockerVersion   = '1.2'
        asciidoctorGradlePluginVersion   = '1.5.9.2'
    }
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath("org.asciidoctor:asciidoctor-gradle-plugin:${asciidoctorGradlePluginVersion}")
        classpath("se.transmode.gradle:gradle-docker:${gradleDockerVersion}")
    }
}

plugins {
  id "org.springframework.boot" version "2.0.6.RELEASE"
  id "org.asciidoctor.convert" version "1.5.9.2"
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'maven'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'org.asciidoctor.convert'
apply plugin: 'application'
apply plugin: 'docker'

apply from: 'local.gradle'

mainClassName = 'class.path.package.BootApplication'

version = '0.0.3a'
sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    // Standard spring boot packages
    compile('org.springframework.boot:spring-boot-starter-web')
    compile('org.springframework.cloud:spring-cloud-starter-config')
    compile('org.springframework.boot:spring-boot-starter-jersey')
    compile('org.springframework.boot:spring-boot-starter-security')
    compile('org.springframework.boot:spring-boot-starter-validation')
    compile('org.springframework.boot:spring-boot-starter-data-jpa')

    compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')

    compile('org.postgresql:postgresql')
    compile('biz.paluch.redis:lettuce:4.4.6.Final')
    compile('org.pacesys:openstack4j-core:3.1.0')
    compile('org.pacesys.openstack4j.connectors:openstack4j-httpclient:3.1.0')

    // Dozer object mapping
    compile('net.sf.dozer:dozer:5.5.1')
    // Sengrid library
    compile('com.sendgrid:sendgrid-java:4.2.1')
    compile('org.freemarker:freemarker:2.3.28')
    // Cloudant
    compile('com.cloudant:cloudant-client:2.9.0')
    compile('com.squareup.okhttp3:okhttp-urlconnection:3.4.2')
    compile('org.json:json:20171018')
    compile('javax.validation:validation-api:2.0.1.Final')
    //Swagger2
    compile('io.springfox:springfox-swagger2:2.9.2')
    compile('io.springfox:springfox-swagger-ui:2.9.2')

    runtime('org.springframework.boot:spring-boot-devtools')

    testCompile('org.springframework.boot:spring-boot-starter-test')
    testCompile('org.springframework.security:spring-security-test')
    testCompile("org.springframework.restdocs:spring-restdocs-mockmvc")
    testCompile("org.asciidoctor:asciidoctor-gradle-plugin:1.5.9.2")

    asciidoctor('org.springframework.restdocs:spring-restdocs-asciidoctor:2.0.2.RELEASE')

}

processResources {
//    expand(project.properties)
}

ext {
    springCloudVersion = 'Finchley.RELEASE'
    snippetsDir = file('build/generated-snippets')
//  springRestDocsVersion = '2.0.2.RELEASE'
}

ext['spring-restdocs.version'] = '${springRestDocsVersion}'

test { 
    outputs.dir snippetsDir
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
        mavenBom("org.springframework.boot:spring-boot-dependencies:${springBootVersion}")
    }
}

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

jar {
    dependsOn asciidoctor 
    from ('${asciidoctor.outputDir}/html5') { 
        into 'static/apidocs'
    }
}

Моя проблема на самом деле в этой части:

jar {
    dependsOn asciidoctor 
    from ('${asciidoctor.outputDir}/html5') { 
        into 'static/apidocs'
    }
}

Исполняемый jar не копирует файл index.html, выполняемый из asciidoctor, в jar, а jar выполняется только без этого файла

Итак, как я могу скопировать build / asciidoc / html5 / index.html из сборки папку в исполняемый jar?

Также, если мне нужно использовать задачу bootJar, как я могу заставить ее включать всю необходимую банку в / BOOT-INF / lib /

0
mibrahim.iti 13 Ноя 2018 в 22:51

1 ответ

Лучший ответ

Ваша конфигурация почти правильная, но вы настраиваете неправильную задачу. Жирная банка Spring Boot создается с помощью задачи bootJar, а не задачи jar. Вам необходимо заменить jar на bootJar в вашем build.gradle. Это приведет к тому, что он будет выглядеть так, как в следующем примере:

bootJar {
    dependsOn asciidoctor 
    from ("${asciidoctor.outputDir}/html5") { 
        into 'static/docs'
    }
}

Это конфигурация описано в документации REST Docs.

2
Andy Wilkinson 14 Ноя 2018 в 09:29