Gradle 为使用 spring-boot 的 assemble 创建的 jar 设置名称

Gradle set name for jar created with spring-boot's assemble

我想用 gradle (kotlin-dsl) 创建一个可执行 jar,我想给它一个自定义名称。对于可执行 jar,我使用 spring 引导插件和 ./gradlew :app1:assemble:

plugins {
    id("myproject.java-application-conventions")
    id("org.springframework.boot") version "2.2.2.RELEASE"
}
dependencies {
    implementation(project(":lib"))
}
application {
    mainClass.set("org.myproject.app.Main")
}

init 又创建了两个文件,buildSrc/build.gradle.kts:

plugins {
    `kotlin-dsl`
}

repositories {
    gradlePluginPortal()
    mavenCentral()
}

buildSrc/src/main/kotlin/myproject.java-application-conventions.gradle.kts

plugins {
    id("lomboker.java-common-conventions")
    application
}

使用 ./gradlew :app1:assemble 我可以创建一个可执行 jar,但我不知道如何设置它的名称。

处理命名 jar,但我不知道如何应用任何答案来解决我的问题。

jar 块添加到我的 gradle 文件不起作用:Expression 'jar' cannot be invoked as a function. 它被解释为 sun.tools.jar.resources.jar。所以我尝试 tasks.jar 代替。 对于

tasks.jar {
    archiveBaseName.set("myapp")
    archiveVersion.set("version")
}

./gradlew :app1:jar 构建成功时不会创建任何 jar(无论如何它都不能执行)并且 ./gradlew :app1:assemble 忽略属性并只创建 ./app1/build/libs/app1.jar.

因为我没有使用 jarassemble 我想我应该使用 tasks.assemble 块。但这不能识别 archiveBaseNamearchiveVersion 而且我不知道 API 是什么。

这是页面:https://plugins.gradle.org/plugin/org.springframework.boot 但我找不到 API。

assemble 是一个生命周期任务,这意味着它不会创建任何东西。它的作用是触发它所依赖的并且确实有一些输出的其他任务。您可以通过 运行 使用 --console=plain.

构建来查看这些任务

creates the Spring Boot fat jar is named bootJar. As you can see from its javadoc的任务,它是Gradle的Jar的自定义,可以用同样的方式配置:

tasks.bootJar {
    archiveBaseName.set("myapp")
    archiveVersion.set("version")
}