gradle - 使用jib-gradle-plugin构建多项目Dropwizard应用

标签 gradle jib

我有一个想要使用jib构建的gradle项目。该项目包含子项目,其排列方式如下:

root
|
|build.gradle.kts
|settings.gradle.kts
|web/
    |build.gradle.kts
    |src/
        |main/
             |java....(etc)
             |resources/
                       |config.yaml

注意::web子项目的资源中包含一个config.yaml

我让副臂在root build.gradle中使用适当的入口点构建了一个docker镜像,但是我不确定如何获取镜像中包含的:web子项目的资源。

我在根jib中的build.gradle任务如下:
tasks {
    jib {
        configurations {
            container {
                mainClass = applicationMainClassName
                args = listOf("server", "$appRoot/resources/config.yaml")
                ports = listOf("8080")
                jvmFlags = listOf("-server", "-Djava.awt.headless=true", "-XX:+UseG1GC", "-XX:MaxGCPauseMillis=100", "-XX:+UseStringDeduplication")
            }
        }
    }
}

我试过在容器中的args中同时使用$appRoot/config.yaml$appRoot/resources/config.yaml,但没有运气。

生成镜像并尝试运行它后的错误如下:

> docker run my_app

java.io.FileNotFoundException: File /resources/config.yaml not found
    at io.dropwizard.configuration.FileConfigurationSourceProvider.open(FileConfigurationSourceProvider.java:18)
    at io.dropwizard.configuration.SubstitutingSourceProvider.open(SubstitutingSourceProvider.java:37)
    at io.dropwizard.configuration.BaseConfigurationFactory.build(BaseConfigurationFactory.java:80)
    at io.dropwizard.cli.ConfiguredCommand.parseConfiguration(ConfiguredCommand.java:126)
    at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:74)
    at io.dropwizard.cli.Cli.run(Cli.java:78)
    at io.dropwizard.Application.run(Application.java:93)
    at my.web.HelloWorldApplication.main(HelloWorldApplication.java:17)

最佳答案

因此,在进一步阅读臂文档之后,所有资源都被安装在/app/resources中。为了提取所有子项目资源,我在根项目build.gradle.kts中做了以下操作:

// collect all subproject resources
tasks.processResources {
    from(subprojects.flatMap {
        it.sourceSets.main.get().resources.srcDirs
    })
}

这里的一件事是,在不同的子项目中不能有相同名称的文件。

关于gradle - 使用jib-gradle-plugin构建多项目Dropwizard应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56499868/

相关文章:

spring-boot - 使用JIB插件对Spring Boot应用程序进行Docker化

angular - 如何在使用 jib 时创建 docker-compose.yml 文件?

java - Spring Boot 默认测试抛出 IllegalStateException

android - gradlew/Android Studio - 不支持的 major.minor 版本 52.0

gradle - 为什么gradle的buildscript类路径不包含buildSrc?

java - 即使在 gradle 构建中排除后,Spring Boot DevTools 仍在 docker 容器内使用

jib - Google jib - 更改所有文件和文件夹的所有者

java - gcr.io/distroless/java :11 use base version from 11:. 0.6 到 11.0.8

gradle - 如何获得 “gradle”具有与 “ant”类似的输出详细信息?

gradle - 使用适用于Java的Google Cloud Translation客户端库时遇到错误(Android)