Spring Boot Gradle从构建的jar中制作一个tar文件,不包括资源

时间:2019-05-30 03:48:08

标签: java spring-boot gradle

我想从Spring Boot应用程序中的内置包中创建一个tar文件。我的构建文件如下所示:

apply plugin: 'distribution'

distributions {
    main {
        baseName = "${project.name}"
        contents {
            into('/conf'){
                from('src/main/resources')
            }
            into('/bin'){
                from('libs')
            }
        }
    }
}

tasks.withType(Tar) {
    compression = Compression.GZIP
    extension = "tar.gz"
}

configurations {
    customArch
}

artifacts {
    customArch file(distTar.archivePath)
}

我想要一个包含以下目录结构的tar.gz文件:

tar.gz:
   - bin
       - project.jar
   - conf
       - application.yaml
       - anything else from the resources folder

但是,当我构建pakcage时,它会给我一个包含源文件的tar文件和一个带有jar文件的单独的lib目录。如果您能帮助我了解问题所在,我们将不胜感激。我怀疑出于某种原因,发行版会在构建之前运行,因此它没有可用的lib目录。

1 个答案:

答案 0 :(得分:1)

要实现目标目录结构,应按以下步骤更改分发封包: (注意:我假设您的application.yaml位于资源目​​录下。)

distributions {
    main {
        baseName = "${project.name}"
        contents {
            into('/conf'){
                from('src/main/resources')
            }
            into('/bin'){
                from('build/libs')
            }
        }
    }
}

要在制作tar文件之前构建jar文件,应按以下方式修改distTar任务:

distTar {
    dependsOn bootJar
}