java - Spring Boot Gradle 从构建的 jar 中创建一个 tar 文件,不包括资源
问题描述
我想从 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 目录。
解决方案
要实现目标目录结构,您应该按如下方式更改分发闭包:(注意:我假设您的 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
}
推荐阅读
- thingsboard - Thingsboard 云菜单消失了
- jenkins-pipeline - 如何从 Jenkins 多分支管道中获取所有 github repos url
- odata - Power Automate Odata List Rows - Filter Rows 表达式是否有 IN 运算符
- java - mysql 版本 8.0.22 未插入 unicode 字符串
- r - 从 R markdown 将 rhandontable 写入 csv
- r - 使用 R 从公开可用的 Amazon S3 存储桶中检索文件名列表
- flutter - 捕获 Flutter_blue 连接方法的 TimeoutException(同步)
- c# - 直接来自用户在控制台中的动态输入
- regex - 即使匹配,Vee-validate regex 规则也显示错误
- matlab - 如何在没有桌面的情况下在 Windows 中启动 MATLAB