【问题标题】:Using jib-gradle-plugin to build multi project Dropwizard app使用 jib-gradle-plugin 构建多项目 Dropwizard 应用程序
【发布时间】:2019-10-23 06:55:35
【问题描述】:

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

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

请注意 :web 子项目在其资源中包含 config.yaml

我让我的 jib 在根 build.gradle 中使用适当的入口点构建 docker 映像,但我不确定如何获取映像中包含的 :web 子项目的资源。

我在根build.gradle中的jib任务如下:

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")
            }
        }
    }
}

我尝试在容器的参数中同时使用$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)

【问题讨论】:

    标签: gradle jib


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-24
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      • 2020-03-03
      • 2020-04-13
      • 1970-01-01
      相关资源
      最近更新 更多