Я хотел бы создать файл tar из встроенных пакетов в приложении Spring Boot. Мой файл сборки выглядит следующим образом:
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
Однако, когда я собираю пакет, он дает мне файл tar, содержащий исходные файлы, и отдельный каталог lib с файлом jar. Буду признателен, если вы поможете мне понять, в чем проблема. Я подозреваю, что по какой-то причине дистрибутив запускается до сборки, поэтому у него нет доступного каталога lib.
Чтобы достичь целевой структуры каталогов, вы должны изменить закрытие дистрибутива следующим образом: (Примечание: я предположил, что ваш application.yaml находится в каталоге ресурсов.)
distributions {
main {
baseName = "${project.name}"
contents {
into('/conf'){
from('src/main/resources')
}
into('/bin'){
from('build/libs')
}
}
}
}
И чтобы создать файл jar перед созданием файла tar, вы должны изменить distTar
задачу следующим образом:
distTar {
dependsOn bootJar
}
Вы можете отключить задачу processResources следующим образом processResources.enabled = false
. Это исключит все ресурсы из окончательного файла JAR.
Как насчет исключения ресурсов из файла Jar?