lunes, 17 de mayo de 2021

Gradle-7 (3) Crear una libreria jar. La dependencia Jakarta como providedCompile o compileOnly. Plugin war. Tareas build vs jar

 Con el  nuevo proceso de cambio de nombres desde "javax" a "jakarta", hay que tener cuidado.

Para las librerías que solo se usan en compilación, se puede utilizar estas 2 definiciones de dependencias en "dependencies {" del build.gradle

  • compileOnly (si se va a crear el jar solamente)
  • providedCompile (solo si se usa elplugin "war")
Por tanto si vamos a crer un jar, debemos de defiirlo como:

compileOnly "jakarta.annotation:jakarta.annotation-api:2.0.0"

Si hubiéramos puesto la segunda opcion (providedCompile "jakarta.annotation:jakarta.annotation-api:2.0.0") sin haberle metido la línea "id war" en "plugins {" del build.gradle, hubieramos tenido este error:

Could not run phased build action using connection to Gradle distribution 'https://services.gradle.org/distributions/gradle-7.0.2-bin.zip'.

cannot assign instance of java.util.Collections$EmptyList to field java.lang.StackTraceElement.moduleVersion of type java.lang.String in instance of java.lang.StackTraceElement B-DAO-lib line 0 Gradle Error Marker

En caso que hubiésemos utilizado el plugin "id war" con providedCompile, NO CREARÁ EL FICHERO JAR, a menos que le demos a la task "jar" en vez de "build" 

No hay comentarios :

Publicar un comentario