programing

Gradle | 스프링 부트 종속성은 제외되지 않습니다.

subpage 2023. 8. 2. 09:05
반응형

Gradle | 스프링 부트 종속성은 제외되지 않습니다.

저는 제가 진행 중인 프로젝트에서 log4j를 작업하기 위해 노력하고 있습니다.build.gradle에 관련 log4j 종속성을 추가하고 Spring boot starter logging을 제외하여 작동했습니다.

이것은 제가 메이븐을 빌드 도구로 사용했을 때 잘 작동했지만, Gradle로 전환한 후에는 전혀 작동하지 않습니다(Spring boot starter의 로깅 제외).다음은 내 빌드의 종속성입니다.gradle

dependencies {
    compile('org.springframework.boot:spring-boot-starter-data-jpa')
    compile('org.springframework.boot:spring-boot-starter-web'){
        exclude module: 'org.springframework.boot:spring-boot-starter-logging'
    }
    compile('org.springframework.boot:spring-boot-starter-log4j')
    compile('org.springframework.boot:spring-boot-starter-data-rest')
    compile('org.springframework.boot:spring-boot-starter-actuator')
    compile('org.postgresql:postgresql:9.3-1101-jdbc41')
    compile('org.scala-lang:scala-library:2.10.4')
    testCompile('org.springframework.boot:spring-boot-starter-test') {
        exclude module: 'commons-logging'
    }
    providedCompile('org.springframework.boot:spring-boot-starter-tomcat')
}

하지만 의존성 트리에서 분명히 볼 수 있듯이,spring-boot-starter-logging여전히 거기에 있습니다.이것이 로그가 작동하지 않는 문제인 것 같습니다.

다음은 종속성 트리입니다.

+--- org.springframework.boot:spring-boot-starter-data-jpa: -> 1.2.1.RELEASE
|    +--- org.springframework.boot:spring-boot-starter:1.2.1.RELEASE
|    |    +--- org.springframework.boot:spring-boot:1.2.1.RELEASE
|    |    |    +--- org.springframework:spring-core:4.1.4.RELEASE
|    |    |    \--- org.springframework:spring-context:4.1.4.RELEASE
|    |    |         +--- org.springframework:spring-aop:4.1.4.RELEASE
|    |    |         |    +--- aopalliance:aopalliance:1.0
|    |    |         |    +--- org.springframework:spring-beans:4.1.4.RELEASE
|    |    |         |    |    \--- org.springframework:spring-core:4.1.4.RELEASE
|    |    |         |    \--- org.springframework:spring-core:4.1.4.RELEASE
|    |    |         +--- org.springframework:spring-beans:4.1.4.RELEASE (*)
|    |    |         +--- org.springframework:spring-core:4.1.4.RELEASE
|    |    |         \--- org.springframework:spring-expression:4.1.4.RELEASE
|    |    |              \--- org.springframework:spring-core:4.1.4.RELEASE
|    |    +--- org.springframework.boot:spring-boot-autoconfigure:1.2.1.RELEASE
|    |    |    \--- org.springframework.boot:spring-boot:1.2.1.RELEASE (*)
|    |    +--- org.springframework.boot:spring-boot-starter-logging:1.2.1.RELEASE

여기 제 log4j.properties 파일이 있습니다.

log4j.rootLogger=INFO, fileout, CONSOLE
PID=????
LOG_PATTERN=[%d{yyyy-MM-dd HH:mm:ss.SSS}] log4j%X{context} - ${PID} %5p [%t] --- %c{1}: %m%n


# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=${LOG_PATTERN}

# Log4j configurations for with file appender
log4j.category.org.hibernate.validator.internal.util.Version=WARN
log4j.category.org.apache.coyote.http11.Http11NioProtocol=WARN
log4j.category.org.apache.tomcat.util.net.NioSelectorPool=WARN
log4j.category.org.apache.catalina.startup.DigesterFactory=ERROR

log4j.appender.fileout=org.apache.log4j.RollingFileAppender
log4j.appender.fileout.File=sampleLog.log
log4j.appender.fileout.MaxFileSize=1024KB
log4j.appender.fileout.MaxBackupIndex=1
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.conversionPattern=${LOG_PATTERN}

갱신하다

jar 파일 종속성 제외 문제를 해결했습니다.그러나 여전히 로깅이 작동하지 않습니다. log4j.properties는 클래스 아래 WAR 배포에도 있습니다.

업데이트 02

My IDE(STS)에 문제가 있습니다.

모든.spring-boot-starter-*프로젝트 종속spring-boot-starter프로젝트, 결과적으로 의존합니다.spring-boot-starter-logging구성 섹션에 다음 행을 추가하여 이 종속성을 제거할 수 있었습니다.

configurations {
    compile.exclude module: 'spring-boot-starter-logging'
}

spring-boot-starter-web에서 spring-boot-starter-logging 모듈을 제외했지만 종속성 트리에서 분명히 알 수 있듯이 spring-boot-starter-data-jpa 모듈도 spring-boot-starter-logging에 대한 종속성을 가지고 있으므로 spring-boot-starter-*의 종속성에서도 제외해야 합니다.모두 spring-boot-boot-slot-slot-slot)에 의존하기 때문입니다.

아래 코드를 사용하여 모든 로깅 종속성을 제거했습니다.

configurations {
    all*.exclude module : 'spring-boot-starter-logging'
}

언급URL : https://stackoverflow.com/questions/28734647/gradle-spring-boot-dependencies-are-not-excluding

반응형