I need to increase version of Lombok in spring boot to latest version. I have this build.gradle:
import org.apache.commons.lang3.StringUtils
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
// globally configured plugins
plugins {
id 'groovy'
id 'org.springframework.boot' version '2.7.18'
id 'io.spring.dependency-management' version '1.1.5'
//see https://unbroken-dome.github.io/projects/gradle-xjc-plugin/
id "org.unbroken-dome.xjc" version "2.0.0"
id "nebula.lint" version "19.0.2"
/* Git plugins for Gradle (last version 5.0.0 but we cannot use with java 8) */
id "org.ajoberstar.grgit" version "5.2.2"
/* gradle release and version management plugin */
id 'pl.allegro.tech.build.axion-release' version '1.17.0'
id "de.undercouch.download" version "5.6.0"
}
description = 'ADM - Packstation International Client Project'
scmVersion {
tag {
String ver = '5.0.0'
if (project.hasProperty("versionJenkins")) {
ver = project.property("versionJenkins")
}
initialVersion({ config, position -> ver })
prefix.set('release-')
}
/**
* versionIncrementer is currently set to 'incrementPrerelease' so it will just bump the rc number (rc1, rc2,...).
* After releasing the initial version, consider switching to this value:
*
* versionIncrementer 'incrementMinorIfNotOnRelease', [releaseBranchPattern: 'release.*']
*
* This will switch versioning to bump minor version on master branch, and patch version on release branches.
*/
versionIncrementer('incrementPrerelease') // for release candidates up to 5.0.0
}
allprojects {
apply plugin: 'groovy'
apply plugin: 'io.spring.dependency-management'
// release plugin will handle version:
project.version = scmVersion.version
// PS-27090 if revision is given and != "1.0" the project.version is not SNAPSHOT
if (project.hasProperty("gradleMGSRevision") && project.property("gradleMGSRevision") != "1.0") {
String[] temp = project.version.split('-SNAPSHOT')
project.version = temp[0]
}
/* tell spring, not to create a bootJar yet */
bootJar {
enabled = false
}
repositories {
def baseURL = 'https://artifactory.dhl.com:443/'
def paths = [
'jcenter',
'maven-central',
'gradle-remote',
'jasper2-cache',
'npmjs-cache',
'jasperreports-cache',
'maven-central-cache',
'JitPack-cache',
'sonartype-maven-cache',
'maven-release'
]
paths.each { path ->
maven {
url "${baseURL}${path}"
}
}
}//repositories
jar {
manifest {
String gitRevision = 'dirty'
String gitShortRevision = 'dirty'
String buildId = '0'
String gitDate = 'not available'
if (project.hasProperty("buildIdJenkins")) {
buildId = project.property("buildIdJenkins")
}
if (!grgit.head()) {
logger.warn("no git/scm information available: will not add details in the manifest")
}
gitDate = grgit.head()?.dateTime?.toString()
gitRevision = grgit.head()?.id
gitShortRevision = gitRevision.substring(0, 7)
String versionMajorMinor = versionMajorMinor()
String versionPackage = versionPackage()
// buildServiceVersion = PackageVersion-<BuildDate(YYYY.MM.DD)>-<BuildTime(HH.mm)>-<shortGithash>-<BuildVersion>
String buildServiceVersion = "${versionPackage}-${LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd-HHmm"))}-$gitShortRevision-$buildId"
System.setProperty('buildServiceVer', buildServiceVersion)
System.setProperty('product-major-minor-version', versionMajorMinor)
System.setProperty('product-package-version', versionPackage)
attributes(
'product-version': version,
'build-time': LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd-HHmm")),
'build-id': buildId,
'build-service-version': buildServiceVersion,
'git-rev': gitRevision,
'git-date': gitDate,
'Implementation-Vendor-Id': 'de.deutschepost.adm',
'Implementation-Artifact': project.name,
'product-major-minor-version': versionMajorMinor,
'product-package-version': versionPackage)
}
}//jar
test {
useJUnitPlatform {
includeEngines("junit-jupiter", "spock", "spring-boot-starter-test")
exclude '/integration/**'
}
}
dependencyManagement {
imports {
//see https://www.baeldung.com/spring-maven-bom
mavenBom("org.springframework.boot:spring-boot-dependencies:2.7.18")
}
}
// external properties, visible to all projects
ext {
versions = [
groovy : '3.0.21',
spock : '2.4-M4-groovy-3.0',
spring : '5.3.34',
springSec : '5.8.11',
hibernate : '5.4.33.Final',
jackson : '2.15.4',
protobuf : '4.26.0',
lesscss : '1.7.0.1.1',
jaxb : '4.0.5',
jaxbApi : '2.3.1',
bouncyCastle : '1.78.1',
junitJupiter : '5.10.2',
junitPlatform: '1.10.2',
poi : '4.1.1'
]
libs = [
groovy : ["org.codehaus.groovy:groovy:${versions.groovy}",
"org.codehaus.groovy:groovy-json:${versions.groovy}",
"org.codehaus.groovy:groovy-templates:${versions.groovy}",
"org.codehaus.groovy:groovy-datetime:${versions.groovy}"],
groovy_template : "org.codehaus.groovy:groovy-templates:${versions.groovy}",
bouncycastle : ["org.bouncycastle:bcpg-jdk15to18:${versions.bouncyCastle}",
"org.bouncycastle:bcpkix-jdk15to18:${versions.bouncyCastle}",
"org.bouncycastle:bcutil-jdk15to18:${versions.bouncyCastle}"],
commons_codec : 'commons-codec:commons-codec:1.16.1',
commons_cli : 'commons-cli:commons-cli:1.6.0', // TPA tool
commons_lang3 : 'org.apache.commons:commons-lang3:3.14.0',
commons_dbcp : 'commons-dbcp:commons-dbcp:1.4',
commons_collections4: 'org.apache.commons:commons-collections4:4.4',
commons_io : 'commons-io:commons-io:2.15.1',
commons_beanutils : 'commons-beanutils:commons-beanutils:1.9.4',
commons_validator : 'commons-validator:commons-validator:1.8.0',
jackson : ["com.fasterxml.jackson.core:jackson-annotations:${versions.jackson}",
"com.fasterxml.jackson.core:jackson-databind:${versions.jackson}",
"com.fasterxml.jackson.datatype:jackson-datatype-jsr310:${versions.jackson}",
"com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:${versions.jackson}"],
guava : 'com.google.guava:guava:33.1.0-jre',
servlet_api : 'javax.servlet:javax.servlet-api:3.1.0',
slf4j : 'org.slf4j:slf4j-api:2.0.0',
jms_api : 'javax.jms:javax.jms-api:2.0', // 2.0 required by IBM MQ
spring : ['org.springframework:spring-core',
'org.springframework:spring-beans',
'org.springframework:spring-context',
'org.springframework:spring-context-support',
'org.springframework:spring-tx'],
spring_jms : 'org.springframework:spring-jms',
spring_test : "org.springframework.boot:spring-boot-starter-test",
spring_data : 'org.springframework.boot:spring-boot-starter-data-jpa',
spring_tx : 'org.springframework:spring-tx',
spring_web : "org.springframework.boot:spring-boot-starter-web",
spring_websocket : "org.springframework.boot:spring-boot-starter-websocket",
spring_data_jpa : ["org.springframework.data:spring-data-jpa"],
spring_security : ["org.springframework.security:spring-security-crypto:${versions.springSec}"],
hibernate : ["org.hibernate:hibernate-entitymanager:${versions.hibernate}",
"org.hibernate:hibernate-ehcache:${versions.hibernate}",
"org.hibernate:hibernate-core:${versions.hibernate}",
"javax.transaction:jta:1.1"],
//dbmigrate : 'de.viaboxx:dbmigrate:2.5.27',
postgresql : "org.postgresql:postgresql:42.7.3",
jaxb_xjc : ["com.sun.xml.bind:jaxb-xjc:${versions.jaxb}",
"com.sun.xml.bind:jaxb-impl:${versions.jaxb}",
"javax.xml.bind:jaxb-api:${versions.jaxbApi}"],
jaxb2Basics : "org.jvnet.jaxb2_commons:jaxb2-basics:1.11.1",
jaxbApi : "javax.xml.bind:jaxb-api:${versions.jaxbApi}",
reflections : 'org.reflections:reflections:0.9.11',
spock : ["org.spockframework:spock-core:${versions.spock}",
"org.spockframework:spock-spring:${versions.spock}"],
junit : ["org.junit.jupiter:junit-jupiter-api:${versions.junitJupiter}",
"org.junit.jupiter:junit-jupiter-engine:${versions.junitJupiter}",
"org.junit.platform:junit-platform-engine:${versions.junitPlatform}",
"org.junit.platform:junit-platform-commons:${versions.junitPlatform}"],
poi : ["org.apache.poi:poi:${versions.poi}",
"org.apache.poi:poi-ooxml:${versions.poi}"],
nlstools : ["de.viaboxx:nlstools:2.6.9",
"org.apache.commons:commons-text:1.11.0"],
java_otp : 'com.eatthepath:java-otp:0.4.0',
sodium : 'com.goterl:lazysodium-java:5.1.4',
jna : 'net.java.dev.jna:jna:5.14.0',
zxing : 'com.google.zxing:javase:3.5.3',
snakeyaml : 'org.yaml:snakeyaml:2.2',
ibmmq : ['com.ibm.mq:com.ibm.mq.allclient:9.3.0.10',
"org.json:json:20240303"],
quartz : "org.quartz-scheduler:quartz:2.3.2",
ini4j : "org.ini4j:ini4j:0.5.4",
pdfbox : "org.apache.pdfbox:pdfbox:2.0.31",
selenium : "org.seleniumhq.selenium:selenium-java:4.20.0",
javax_annotation : "javax.annotation:javax.annotation-api:1.3.2",
nimbus_jose_jwt : "com.nimbusds:nimbus-jose-jwt:9.37.3",
ehcache : "net.sf.ehcache:ehcache:2.10.9.2",
gson : "com.google.code.gson:gson:2.9.0",
protobuf_java : "com.google.protobuf:protobuf-java:${versions.protobuf}",
protobuf_java_util : "com.google.protobuf:protobuf-java-util:${versions.protobuf}",
protobuf_protoc : "com.google.protobuf:protoc:${versions.protobuf}",
]
}
configurations {
nlstools
}
dependencies {
implementation libs.groovy
implementation libs.commons_lang3
implementation libs.commons_collections4
implementation libs.commons_io
implementation libs.commons_beanutils
implementation libs.snakeyaml
implementation libs.commons_codec
implementation libs.bouncycastle
implementation libs.ini4j
implementation libs.nimbus_jose_jwt
implementation(libs.sodium) {
exclude group: 'org.slf4j', module: 'slf4j-api'
}
implementation libs.guava
implementation libs.jna
implementation libs.nlstools
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-data-rest'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-jersey'
implementation 'org.springframework.boot:spring-boot-starter-quartz'
implementation 'org.springframework.boot:spring-boot-starter-security'
// implementation libs.spring_security
implementation libs.spring_jms
implementation libs.jms_api
implementation libs.jaxb_xjc
implementation libs.javax_annotation
implementation libs.jackson
implementation group: 'org.slf4j', name: 'slf4j-api', version: '2.0.13'
implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.5.6'
implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.5.6'
implementation("org.slf4j:slf4j-simple:1.7.21")
testImplementation libs.junit
testImplementation libs.spock
// https://junit.org/junit5/docs/current/user-guide/#running-tests-build-gradle
testImplementation platform("org.junit:junit-bom:${versions.junitJupiter}")
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
configurations.all {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
resolutionStrategy {
forcedModules = ['org.slf4j:slf4j-api:2.0.13']
}
}
}
/**
* @return major.minor.patch version from ADM Packstation Package
*/
String versionPackage() {
String versionWithCR = project?.version //example: 19.1.0-1 or 19.1.0-10
String[] tokens = versionWithCR.split('-')
def result = tokens[0] + StringUtils.leftPad(tokens[1], 2, "0")
return result //example: 19.1.001 or 19.1.010
}
/**
* @return major.minor version
*/
def versionMajorMinor() {
def tokens = project?.version?.split("\.")
return "${tokens[0]}.${tokens[1]}" // example: 19.1
}
Problem is when I try to run application, it that returns:
Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.impl.SimpleLoggerFactory loaded from file:/C:/Users/pkostrou/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.21/be4b3c560a37e69b6c58278116740db28832232c/slf4j-simple-1.7.21.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.slf4j.impl.SimpleLoggerFactory
at org.springframework.util.Assert.instanceCheckFailed(Assert.java:702)
at org.springframework.util.Assert.isInstanceOf(Assert.java:621)
at org.springframework.boot.logging.logback.LogbackLoggingSystem.getLoggerContext(LogbackLoggingSystem.java:305)
at org.springframework.boot.logging.logback.LogbackLoggingSystem.beforeInitialize(LogbackLoggingSystem.java:118)
at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationStartingEvent(LoggingApplicationListener.java:238)
at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:220)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:178)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:171)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:145)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:133)
at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:79)
at org.springframework.boot.SpringApplicationRunListeners.lambda$starting$0(SpringApplicationRunListeners.java:56)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120)
at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:56)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:299)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1289)
at de.deutschepost.adm.AdmDomainApplication.main(AdmDomainApplication.groovy:141)
problem is in method :
private LoggerContext getLoggerContext() {
ILoggerFactory factory = StaticLoggerBinder.getSingleton().getLoggerFactory();
Assert.isInstanceOf(LoggerContext.class, factory, () -> {
return String.format("LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (%s loaded from %s). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml", factory.getClass(), this.getLocation(factory));
});
return (LoggerContext)factory;
}
That StaticLoggerBinder.getSingleton().getLoggerFactory() rerurn SimpleLoggingfactory which is not implementation of LoggerContext. I cant use Spring logging starter, becouse it dont logging into file , I have custom logger initializer. Thank you for help.