Gradle Build --no-daemon: ресурсы внешнего интерфейса, отсутствующие в JAR при сборке без демона - PullRequest
0 голосов
/ 29 января 2020

У меня есть задание, называемое assemblyServerAndClient, для создания внешнего интерфейса и внутреннего интерфейса, а после этого необходимо скопировать внешний интерфейс в папку ресурсов. Когда я запускаю gradle assembleServerAndClient с --no-daemon и запускаю флягу позже, код внешнего интерфейса может не присутствовать в фляге.

Dockerfile для сборки:

FROM gradle:jdk11 as builder
WORKDIR /home/gradle/src
USER root
COPY --chown=gradle:gradle ./ ./
RUN gradle assembleServerAndClient -s --no-daemon --console plain
RUN chown -R root:root ./

FROM adoptopenjdk/openjdk11-openj9:jdk-11.0.1.13-alpine-slim
COPY --from=builder /home/gradle/src/server/build/libs/*-all.jar admanager.jar
EXPOSE 8080
CMD java  -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Dcom.sun.management.jmxremote -noverify ${JAVA_OPTS} -jar admanager.jar

Задача Gradle:

copyClientResources.doFirst { //<2>
    copy {
        from project(':frontend').buildDir.absolutePath
        into "${project(':server').buildDir}/resources/main/public"
    }
}

Когда я распечатываю содержимое каталога до и после копирования, сборка внешнего интерфейса находится там, где она находится ожидается.

    files { file(project(':frontend').buildDir.absolutePath).listFiles() }.each {
        println "frontend $it"
    }

    [copy stuff]

    files { file("${project(':server').buildDir}/resources/main/public").listFiles() }.each {
        println "backend $it"
    }

Отпечатки:

frontend /home/gradle/src/frontend/build/favicon.ico
frontend /home/gradle/src/frontend/build/manifest.json
frontend /home/gradle/src/frontend/build/index.html
frontend /home/gradle/src/frontend/build/precache-manifest.a70b151a07982defa3e904769864b44d.js
frontend /home/gradle/src/frontend/build/service-worker.js
frontend /home/gradle/src/frontend/build/asset-manifest.json
frontend /home/gradle/src/frontend/build/static
backend /home/gradle/src/server/build/resources/main/public/favicon.ico
backend /home/gradle/src/server/build/resources/main/public/manifest.json
backend /home/gradle/src/server/build/resources/main/public/index.html
backend /home/gradle/src/server/build/resources/main/public/precache-manifest.a70b151a07982defa3e904769864b44d.js
backend /home/gradle/src/server/build/resources/main/public/service-worker.js
backend /home/gradle/src/server/build/resources/main/public/asset-manifest.json
backend /home/gradle/src/server/build/resources/main/public/static

Когда я смотрю в банку, созданную без --no-daemon, папка public находится на верхнем уровне файла JAR. С опцией --no-daemon его нет.

...