Spring boot Gradle создает tar-файл из встроенной банки, исключая ресурсы

Я хотел бы создать файл 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.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
1 040
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы достичь целевой структуры каталогов, вы должны изменить закрытие дистрибутива следующим образом: (Примечание: я предположил, что ваш 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
}

Как насчет исключения ресурсов из файла Jar?

Ali 30.05.2019 09:14

Вы можете отключить задачу processResources следующим образом processResources.enabled = false. Это исключит все ресурсы из окончательного файла JAR.

Jason 30.05.2019 10:09

Другие вопросы по теме