Gradle | Spring 引导依赖不排除
Gradle | Spring boot dependencies are not excluding
我正在尝试让 log4j 在我正在处理的项目中工作。我在 build.gradle 中添加了相关的 log4j 依赖项并排除了 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}
更新
我设法修复了 jar 文件依赖项的排除。但是日志记录仍然不起作用,log4j.properties 也在 类 下的 WAR 分布中。
更新 02
它的工作问题是我的 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-starter-logging).
我已经使用以下代码删除了所有日志记录依赖项
configurations {
all*.exclude module : 'spring-boot-starter-logging'
}
我正在尝试让 log4j 在我正在处理的项目中工作。我在 build.gradle 中添加了相关的 log4j 依赖项并排除了 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}
更新
我设法修复了 jar 文件依赖项的排除。但是日志记录仍然不起作用,log4j.properties 也在 类 下的 WAR 分布中。
更新 02
它的工作问题是我的 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-starter-logging).
我已经使用以下代码删除了所有日志记录依赖项
configurations {
all*.exclude module : 'spring-boot-starter-logging'
}