使用jib gradle插件构建多项目Dropwizard应用程序

使用jib gradle插件构建多项目Dropwizard应用程序,gradle,jib,Gradle,Jib,我有一个gradle项目,我想使用jib构建。该项目包含如下排列的子项目: root | |build.gradle.kts |settings.gradle.kts |web/ |build.gradle.kts |src/ |main/ |java....(etc) |resources/ |config.yaml 注意:web子项目的资源中包含一个config

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

root
|
|build.gradle.kts
|settings.gradle.kts
|web/
    |build.gradle.kts
    |src/
        |main/
             |java....(etc)
             |resources/
                       |config.yaml
注意:web子项目的资源中包含一个
config.yaml

我让jib在root 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")
            }
        }
    }
}
我尝试在args中为容器使用
$approt/config.yaml
$approt/resources/config.yaml
,但没有成功

构建映像并尝试运行映像后的错误如下:

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")
            }
        }
    }
}
>docker运行我的应用程序
java.io.FileNotFoundException:未找到文件/resources/config.yaml
在io.dropwizard.configuration.FileConfigurationSourceProvider.open(FileConfigurationSourceProvider.java:18)
在io.dropwizard.configuration.substitutionSourceProvider.open(substitutionSourceProvider.java:37)
在io.dropwizard.configuration.BaseConfigurationFactory.build(BaseConfigurationFactory.java:80)
在io.dropwizard.cli.ConfiguredCommand.parseConfiguration(ConfiguredCommand.java:126)中
在io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:74)
在io.dropwizard.cli.cli.run(cli.java:78)
在io.dropwizard.Application.run(Application.java:93)
在my.web.HelloWorldApplication.main(HelloWorldApplication.java:17)上

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

// collect all subproject resources
tasks.processResources {
    from(subprojects.flatMap {
        it.sourceSets.main.get().resources.srcDirs
    })
}
这里的一点是,在不同的子项目中不能有相同名称的文件