web-dev-qa-db-ja.com

Gradle | SpringBootの依存関係は除外されていません

自分が取り組んでいるプロジェクトでlog4jを機能させようとしています。関連するlog4jの依存関係をbuild.gradleに追加し、Springブートスターターのログを除外して機能できるようにしました。

これは、ビルドツールとしてMavenを使用した場合は正常に機能しましたが、Gradleに切り替えると、まったく機能しません(Springブートスターターからのロギングを除く)。これが私のbuild.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}

[〜#〜] update [〜#〜]

Jarファイルの依存関係の除外を修正することができました。しかし、ロギングはまだ機能していません。log4j.propertiesもクラスの下のWARディストリビューションにあります。

PDATE 02

動作した問題はmy IDE(STS)

11
Switch

すべてのspring-boot-starter-*プロジェクトはspring-boot-starterプロジェクトに依存しており、プロジェクトはspring-boot-starter-loggingに依存しています。構成セクションに次の行を追加することで、この依存関係を削除することができました。

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

Spring-boot-starter-loggingモジュールをspring-boot-starter-webから除外しましたが、依存関係ツリーから明らかなように、モジュールspring-boot-starter-data-jpaにもspring-への依存関係があります。 boot-starter-loggingなので、そこからも除外する必要があります(また、他のすべてのspring-boot-starter- *依存関係からも除外する必要があります。これらはすべて、spring-boot-starter-loggingに依存しているためです)。

2
dunni