我使用Spring Rest Docs和JIB
当我做CCD_ 1和CCD_。我可以在example.com/docs/asciidocname.html
上获得spring-rest文档生成的api文档。
但是具有CCD_ 4的docker图像不包含该url。
当我做./gradlew jib
时,我想得到Spring Rest Docs生成的Api文档
下面是我的build.gradle
的一部分
plugins {
id "org.asciidoctor.convert" version "2.4.0"
id "com.google.cloud.tools.jib" version "2.5.0"
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
asciidoctor
}
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/milestone' }
maven { url 'https://repo.spring.io/snapshot' }
}
sourceCompatibility = '11'
dependencies {
/**
* RestDocs
*/
asciidoctor 'org.springframework.restdocs:spring-restdocs-asciidoctor'
testImplementation('org.springframework.restdocs:spring-restdocs-mockmvc')
}
test {
useJUnitPlatform {
includeEngines 'junit-jupiter'
}
}
/*************************
* Rest Docs
*************************/
asciidoctor {
dependsOn test
}
bootJar {
dependsOn asciidoctor
from ("${asciidoctor.outputDir}/html5") {
into 'static/docs'
}
}
您已将bootJar
任务配置为依赖于asciidoctor
任务,并包含生成的HTML文件:
bootJar {
dependsOn asciidoctor
from ("${asciidoctor.outputDir}/html5") {
into 'static/docs'
}
}
Jib在构建容器映像时不使用jar文件,因此需要向Jib添加类似的配置。
让我们先来看看如何让它包含生成的HTML。它提供了一个名为jib
的扩展,您可以在其中使用./gradlew build
0来执行此操作:
jib {
extraDirectories {
paths {
path {
from = "${asciidoctor.outputDir}/html5"
into = "/app/resources/static/docs"
}
}
}
}
您可以在其Gradle插件的文档中了解更多关于向Jib生成的图像添加文件的信息。
现在我们需要将jib
任务配置为依赖于asciidoctor
任务。这样可以确保在Jib尝试将HTML包含在图像中之前生成HTML。由于扩展和任务都被命名为jib
,我们需要明确地引用任务:
tasks.named('jib') {
dependsOn asciidoctor
}
如果您将镜像构建到本地Docker守护进程,您可能也需要jibDockerBuild
任务的类似配置:
jibDockerBuild {
dependsOn asciidoctor
}
我找到了另一种方法。
首先。JIB通过java -cp
命令执行一个主java类。未打包的.jar
文件。
和ascidctor任务将html文件复制到jar文件中。
我可以在jib-gradlegithub找到选择。
- 如果使用
containerizingMode = 'packaged'
选项。它将在docker容器中构建jar文件并执行CCD_ 18命令 - 具有该选项的CCD_ 19任务将执行CCD_
所以我将bootJar任务复制到jar任务中并使用该选项。它的效果很好