Gradle:指定最终的spring-boot jar文件的正确方法是什么?

我的spring-boot应用程序最初是用maven构build的,但是我正试着去实现它。 我的构build过程的一部分是使用dockerfile-maven插件制作docker镜像 。 最接受的gradle等价物似乎是com.palantir.docker ,所以这就是我正在使用的(至less根据这个教程的关键) 。

我的设置很简单。 我的dockerfile需要一个构build参数,这是最终的jar,并将其添加到图像。

FROM openjdk:8-jdk-alpine MAINTAINER github.com/paul-nelson-baker EXPOSE 5005 8080 35729 ENTRYPOINT ["java", "-Xdebug", "-Xrunjdwp:server=y,transport=dt_socket,address=5005,suspend=n", "-jar", "/var/paulbaker/pauls-blog.jar"] ARG JAR_FILE ADD ${JAR_FILE} "/var/paulbaker/pauls-blog.jar" 

让我饿的部分是gradle设置。 我通过的构build参数显示正确:

 docker { name = "paulbaker.io/my-blog" tags 'latest' dockerfile file('src/main/docker/Dockerfile') files "${project.name}-${version}.jar" buildArgs([JAR_FILE: "${project.name}-${version}.jar"]) } 

然而,无论何时我试图构build图像,即使实际的Java构build成功,我也会得到以下错误:

 $ gradle build docker > Task :docker FAILED ADD failed: stat /var/lib/docker/tmp/docker-builder952857277/pauls-blog-0.0.1-SNAPSHOT.jar: no such file or directory 

我已经尝试了无数的组合来试图指定./build/libs/pauls-blog-0.0.1-SNAPSHOT.jar的path(相对于我的项目),我可以看到上面的打印目录不。

显然,我不了解gradle的构build,有人可以清除如何获得最终的jar文件吗?

我已经解决了这个问题,但是我不知道为什么这是不同的,所以我不打开这个问题,所以有人有机会详细解释为什么这个问题有效。

正确的值应该是引用jar.archivePath 。 所以最终的结果是这样的:

 docker { name = "paulbaker.io/my-blog" tags 'latest' dockerfile file('src/main/docker/Dockerfile') files jar.archivePath buildArgs([JAR_FILE: "${jar.archiveName}"]) }