Gradle不会将html文件复制到执行的jar中

时间:2018-11-13 19:51:30

标签: spring-boot gradle build.gradle

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不会将asciidoctor执行的index.html文件复制到jar中,并且只有在没有此文件的情况下才能执行jar

  

所以我如何从构建中复制 build / asciidoc / html5 / index.html   文件夹放入执行的jar中?

如果我需要使用bootJar任务,那么如何使它包含所需的所有jar到 / BOOT-INF / lib /

1 个答案:

答案 0 :(得分:1)

您的配置几乎正确,但是您正在自定义错误的任务。使用bootJar任务而不是jar任务构建Spring Boot胖子。 您需要在jar中将bootJar替换为build.gradle。这将导致它看起来与以下示例相同:

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

这是described in the REST Docs documentation的配置。