【问题标题】:Gradle set name for jar created with spring-boot's assemble使用 spring-boot 的 assemble 创建的 jar 的 Gradle 集名称
【发布时间】:2021-06-11 13:44:19
【问题描述】:

我想用 gradle (kotlin-dsl) 创建一个可执行的 jar,我想给它一个自定义名称。对于可执行 jar,我使用的是 spring boot 插件和./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,但我不知道如何设置它的名称。

This question 处理命名 jar,但我不知道如何对我的问题应用任何答案。

向我的 gradle 文件添加 jar 块不起作用: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

由于我没有使用jar,而是assemble,我想我应该使用tasks.assemble 块。但这不能识别archiveBaseNamearchiveVersion,我也不知道API 是什么。

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

【问题讨论】:

    标签: java spring-boot gradle jar gradle-kotlin-dsl


    【解决方案1】:

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

    creates the Spring Boot fat jar is named bootJar 的任务。从its javadoc可以看出,它是对Gradle的Jar的自定义,可以同样的方式进行配置:

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

    【讨论】:

      猜你喜欢
      • 2019-04-13
      • 2016-06-05
      • 1970-01-01
      • 2017-02-19
      • 2019-06-09
      • 2017-08-10
      • 2018-04-04
      • 2016-02-04
      • 2016-02-08
      相关资源
      最近更新 更多