框架springboot3.1.3+jdk17+gradle
build.gradle文件内容如下:
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.3'
id 'io.spring.dependency-management' version '1.1.3'
}
group = 'com.common'
java {
sourceCompatibility = '17'
}
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', "2022.0.4")
}
dependencies {
implementation 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:2022.0.0.0'
implementation 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2022.0.0.0'
//Gateway
implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
//Ribbon
implementation 'org.springframework.cloud:spring-cloud-starter-loadbalancer'
//JWT
implementation 'io.jsonwebtoken:jjwt:0.9.1'
implementation 'javax.xml.bind:jaxb-api:2.3.1'
//Redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis:3.1.3'
//JSON
implementation 'com.alibaba.fastjson2:fastjson2:2.0.39'
//自动get/set
implementation 'org.projectlombok:lombok'
//服务监控
implementation 'org.springframework.boot:spring-boot-starter-actuator'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:3.0.2'
}
// 清除目录lib下的依赖包
task clearLibs(type: Delete) {
delete "${buildDir}/libs/lib"
}
// 生成目录lib下的依赖包
task copyLibs(type: Copy) {
from configurations.runtimeClasspath
into "${buildDir}/libs/lib"
include "*.jar"
}
// 修改bootJar任务,使其不打包依赖库,并设置正确的Class-Path
bootJar {
excludes = ["*.jar"]
// 配置jar任务依赖于多个任务,优先执行以下任务
dependsOn clearLibs
dependsOn copyLibs
// 确保只包含编译后的类文件
from sourceSets.main.output
// 配置Class-Path读取依赖包目录
doFirst {
manifest {
attributes(
'Class-Path': configurations.runtimeClasspath.files.collect { "lib/${it.name}" }.join(' ')
)
}
}
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
tasks.named('test') {
useJUnitPlatform()
}
src/main/resources目录下的logback-spring.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
<!-- 从Nacos获取日志目录配置 -->
<property name="LOG_DIR" value="/home/log/common-gateway"/>
<!-- 定义日志文件的命名模式 -->
<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<!-- Info日志 -->
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE_NAME}.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
<maxHistory>30</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- Error日志 -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/error.log</file>
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">-->
<!-- <fileNamePattern>${LOG_DIR}/error.%d{yyyy-MM-dd}.log</fileNamePattern>-->
<!-- <maxHistory>30</maxHistory>-->
<!-- </rollingPolicy>-->
<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 设置日志级别和输出的Appender -->
<root level="INFO">
<appender-ref ref="ERROR_FILE"/>
<appender-ref ref="INFO_FILE"/>
</root>
</configuration>
上述配置在spring tools suite上运行没有问题,可以正常运行,输出日志。但用jenkins(版本号:2.456)打包就报错如下:
> git rev-list --no-walk f7d2ab227e4fc4ecd673c0952a75e29b9d5e7a45 # timeout=10
[Gradle] - Launching build.
[mes-common-gateway] $ /var/jenkins_home/tools/hudson.plugins.gradle.GradleInstallation/gradle8/bin/gradle clean build
Starting a Gradle Daemon (subsequent builds will be faster)
>
**Task :clean**
>
**Task :compileJava**
>
**Task :processResources**
>
**Task :classes**
>
**Task :clearLibs**
UP-TO-DATE>
**Task :copyLibs**
>
**Task :resolveMainClassName**
>
**Task :bootJar**
>
**Task :jar**
>
**Task :assemble**
>
**Task :compileTestJava**
>
**Task :processTestResources**
NO-SOURCE>
**Task :testClasses**
>
**Task :test**
CommonGatewayApplicationTests > contextLoads() FAILED
java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143
Caused by: java.lang.IllegalStateException at LoggingApplicationListener.java:347
Caused by: java.lang.IllegalStateException at LogbackLoggingSystem.java:269
1 test completed, 1 failed
>
**Task :test**
FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':test'.
> There were failing tests. See the report at:
file:///var/jenkins_home/workspace/mes-common-gateway/build/reports/tests/test/index.html
* Try:
> Run with --scan to get full insights.
Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
For more on this, please refer to
https://docs.gradle.org/8.5/userguide/command_line_interface.html#sec:command_line_warnings
in the Gradle documentation.BUILD FAILED in 19s
10 actionable tasks: 9 executed, 1 up-to-date
Build step 'Invoke Gradle script' changed build result to FAILURE
Build step 'Invoke Gradle script' marked build as failure
Finished: FAILURE