Quiero crear un jar ejecutable con gradle (kotlin-dsl) y quiero darle un nombre personalizado. Para el jar ejecutable, estoy usando el complemento de arranque de primavera y ./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 creó dos archivos más, buildSrc/build.gradle.kts:

plugins {
    `kotlin-dsl`
}

repositories {
    gradlePluginPortal()
    mavenCentral()
}

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

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

Con ./gradlew :app1:assemble puedo crear un jar ejecutable pero no veo cómo puedo establecer su nombre.

Esta pregunta trata sobre los frascos de nombres pero no sé cómo aplicar ninguna respuesta a mi problema.

Agregar un bloque jar a mi archivo gradle no funciona: Expression 'jar' cannot be invoked as a function. se interpreta como sun.tools.jar.resources.jar. Así que intento tasks.jar en su lugar. Para

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

./gradlew :app1:jar mientras se construye con éxito no crea jar (no sería ejecutable de todos modos) y ./gradlew :app1:assemble ignora las propiedades y solo crea ./app1/build/libs/app1.jar.

Como no estoy usando jar sino assemble, creo que debería usar un bloque tasks.assemble. Pero eso no reconoce archiveBaseName o archiveVersion y no sé qué es la API.

Esta es la página: https://plugins.gradle.org/plugin/org.springframework .boot pero no encuentro ninguna API.

0
peer 14 mar. 2021 a las 00:10

1 respuesta

La mejor respuesta

assemble es una tarea del ciclo de vida, lo que significa que no crea nada. Su función es desencadenar otras tareas de las que depende y que tienen algún resultado. Puede ver esas tareas ejecutando su compilación con --console=plain.

La tarea que crea el frasco de grasa Spring Boot se llama bootJar. Como puede ver en su javadoc, es una personalización de Gradle Jar y se puede configurar de la misma manera:

tasks.bootJar {
    archiveBaseName.set("myapp")
    archiveVersion.set("version")
}
1
Andy Wilkinson 14 mar. 2021 a las 08:46