import java.time.Instant import java.time.format.DateTimeFormatter plugins { id 'org.springframework.boot' version '2.7.18' apply false id 'io.spring.dependency-management' version '1.1.0' apply false id 'com.github.shalousun.smart-doc' version '2.6.9' apply false id "org.sonarqube" version "4.0.0.2929" id 'com.google.cloud.tools.jib' version '3.3.2' apply false } ext { // 自定义扩展 字段 这里定义版本信息 jjwtVersion = '0.11.1' mapstructPlusVersion = '1.2.4' jacksonVersion = '2.17.1' woodstoxVersion = '6.6.2' lombokVersion = '1.18.32' guavaVersion = '33.2.0-jre' slf4jVersion = '1.7.36' log4jVersion = '1.2.17' springCloudVersion = '2021.0.9' springCloudAlibabaVersion = '2021.0.6.0' springBootVersion = '2.7.18' junitVersion = '5.9.3' skywalkingVersion = '8.15.0' canalVersion = '1.1.5' mysqlVersion = '8.0.27' colaVersion = '4.0.1' pagehelperVersion = '1.4.7' smartDocVersion = '2.6.9' hibernateValidatorVersion = '8.0.1.Final' javaxAnnotationVersion = '1.3.2' prometheusVersion = '1.10.4' minioVersion = '8.5.4' easyexcelVersion = '3.3.1' hutoolVersion = '5.8.18' zxingVersion = '3.4.0' shardingsphereVersion = '5.2.1' snakeyamlVersion = '1.33' oauth2AuthorizationServerVersion = '0.4.1' springSecurityVersion = '5.8.2' wxJavaVersion = '4.4.0' bootAdminVersion = '2.7.15' fastjsonVersion = '1.2.83' curvesapiVersion = '1.06' jeepayVersion = '1.5.0' } //配置所有项目公共内容 allprojects { group 'com.sa' version '1.1-SNAPSHOT' //配置仓库 repositories { maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://oss.sonatype.org/content/groups/public/' } maven { url 'https://maven.sino-assist.com/repository/thirdparty/' } mavenLocal() mavenCentral() } } def pomProjects = ['starters', 'infra-config', 'job', 'interface', 'infra', 'infra', 'admin', 'search', 'doc', 'commons', 'ns'] def bootRunProjects = [ 'data-search', 'gps-data', 'data-statistics', 'data-report', 'boot-admin', 'zgs-manager', 'return-order', 'aggregation', 'api-gate', 'sa-uaa', 'supplier-setting', 'finance-connector', 'sa-gateway', 'export-app', 'sa-response', 'sa-api', 'sa-app', 'sa-admin', 'gps-pass', 'file-oss', 'supplier-app','call-center','toc-user-client','supplier-manage' ] static def getMainClass(project) { if (project.hasProperty('mainClassName')) { return project.mainClassName } else { return null } } //配置子工程 subprojects { if (!pomProjects.contains(it.name)) { apply plugin: "io.spring.dependency-management" apply plugin: "java" // 设置编码格式 tasks.withType(JavaCompile).configureEach { options.encoding = "UTF-8" java { sourceCompatibility = "8" targetCompatibility = "8" } } dependencyManagement { resolutionStrategy { cacheChangingModulesFor 0, 'seconds' } imports { mavenBom "com.alibaba.cloud:spring-cloud-alibaba-dependencies:${springCloudAlibabaVersion}" mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" mavenBom "org.springframework.boot:spring-boot-dependencies:${springBootVersion}" mavenBom "com.fasterxml.jackson:jackson-bom:${jacksonVersion}" // mavenBom "org.springframework.security:spring-security-bom:${springSecurityVersion}" } dependencies { dependency "org.slf4j:slf4j-api:${slf4jVersion}" dependency "log4j:log4j:${log4jVersion}" dependency "com.alibaba.otter:canal.client:${canalVersion}" dependency "com.alibaba.otter:canal.protocol:${canalVersion}" dependency "mysql:mysql-connector-java:${mysqlVersion}" dependency "com.github.pagehelper:pagehelper-spring-boot-starter:${pagehelperVersion}" dependency "com.github.shalousun:smart-doc:${smartDocVersion}" dependency "org.hibernate:hibernate-validator:${hibernateValidatorVersion}" dependency "javax.annotation:javax.annotation-api:${javaxAnnotationVersion}" dependency "org.projectlombok:lombok:${lombokVersion}" dependency "io.micrometer:micrometer-registry-prometheus:${prometheusVersion}" dependency "io.minio:minio:${minioVersion}" dependency "com.alibaba:easyexcel:${easyexcelVersion}" dependency "com.alibaba:easyexcel-core:${easyexcelVersion}" dependency "cn.hutool:hutool-core:${hutoolVersion}" dependency "cn.hutool:hutool-all:${hutoolVersion}" dependency "com.alibaba:fastjson:${fastjsonVersion}" dependency "com.google.zxing:core:${zxingVersion}" dependency "com.google.zxing:javase:${zxingVersion}" dependency "org.yaml:snakeyaml:${snakeyamlVersion}" dependency "org.apache.shardingsphere:shardingsphere-jdbc-core-spring-boot-starter:${shardingsphereVersion}" dependency "org.springframework.security:spring-security-oauth2-authorization-server:${oauth2AuthorizationServerVersion}" dependency "com.github.binarywang:weixin-java-pay:${wxJavaVersion}" dependency "com.github.binarywang:weixin-java-miniapp:${wxJavaVersion}" dependency "de.codecentric:spring-boot-admin-starter-client:${bootAdminVersion}" dependency "com.github.binarywang:weixin-java-mp:${wxJavaVersion}" dependency "com.jeequan:jeepay-sdk-java:${jeepayVersion}" dependency "com.google.guava:guava:${guavaVersion}" dependency "org.apache.skywalking:apm-toolkit-logback-1.x:${skywalkingVersion}" dependency "com.fasterxml.jackson.core:jackson-core:${jacksonVersion}" dependency "com.fasterxml.jackson.core:jackson-databind:${jacksonVersion}" dependency "com.fasterxml.jackson.core:jackson-annotations:${jacksonVersion}" dependency "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:${jacksonVersion}" dependency "com.fasterxml.jackson.dataformat:jackson-dataformat-smile:${jacksonVersion}" dependency "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:${jacksonVersion}" dependency "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${jacksonVersion}" dependency "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:${jacksonVersion}" dependency "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:${jacksonVersion}" dependency "com.fasterxml.jackson.module:jackson-module-parameter-names:${jacksonVersion}" dependency "com.fasterxml.woodstox:woodstox-core:${woodstoxVersion}" dependency "com.github.virtuald:curvesapi:${curvesapiVersion}" dependency "com.google.errorprone:error_prone_annotations:2.11.0" dependency "com.google.protobuf:protobuf-java:3.17.1" dependency "com.nimbusds:nimbus-jose-jwt:9.24.4" dependency "com.squareup.okhttp3:okhttp:4.9.3" dependency "com.squareup.okio:okio:2.8.0" dependency "commons-codec:commons-codec:1.15" dependency "commons-collections:commons-collections:3.2.2" dependency "commons-fileupload:commons-fileupload:1.4" dependency "commons-logging:commons-logging:1.2" dependency "commons-io:commons-io:2.11.0" dependency "commons-lang:commons-lang:2.6" dependency 'commons-beanutils:commons-beanutils:1.9.4' dependency "net.java.dev.jna:jna:5.10.0" dependency "org.apache.commons:commons-pool2:2.11.1" dependency "org.apache.commons:commons-compress:1.23.0" dependency "org.apache.httpcomponents:httpclient:4.5.14" dependency "org.apache.httpcomponents:httpmime:4.5.14" dependency "org.apache.groovy:groovy:4.0.21" dependency "org.apache.poi:poi:4.1.2" dependency "org.apache.poi:poi-ooxml:4.1.2" dependency "org.apache.poi:poi-ooxml-schemas:4.1.2" dependency "org.apache.poi:poi-scratchpad:4.1.2" dependency "org.bouncycastle:bcprov-jdk15on:1.70" dependency "org.bouncycastle:bcpkix-jdk15on:1.70" dependency "org.mybatis:mybatis:3.5.14" dependency "org.mybatis:mybatis-spring:2.1.2" dependency "org.ow2.ams:asm:9.3" dependency "org.objenesis:objenesis:3.2" dependency "org.beust:jcommander:1.82" } } dependencies { compileOnly "com.google.guava:guava" compileOnly "cn.hutool:hutool-all" compileOnly "org.projectlombok:lombok:${lombokVersion}" annotationProcessor "org.projectlombok:lombok:${lombokVersion}" testCompileOnly "org.projectlombok:lombok:${lombokVersion}" testAnnotationProcessor "org.projectlombok:lombok:${lombokVersion}" compileOnly "io.github.linpeilie:mapstruct-plus:${mapstructPlusVersion}" annotationProcessor "io.github.linpeilie:mapstruct-plus-processor:${mapstructPlusVersion}" testCompileOnly "io.github.linpeilie:mapstruct-plus:${mapstructPlusVersion}" testAnnotationProcessor "io.github.linpeilie:mapstruct-plus-processor:${mapstructPlusVersion}" } } if (it.name.contains("-starter")) { apply plugin: "java-library" } if (bootRunProjects.contains(it.name)) { apply plugin: "java" apply plugin: "idea" apply plugin: "org.springframework.boot" apply plugin: 'com.github.shalousun.smart-doc' apply plugin: 'com.google.cloud.tools.jib' smartdoc { configFile = file("src/main/resources/smart-doc.json") exclude 'org.springframework.boot:spring-boot-starter-tomcat' exclude 'org.springframework.boot.*' exclude 'com.xuxueli:xxl-job-core:*' exclude 'com.alibaba:easyexcel-core:*' exclude 'org.apache.*' } //配置子模块依赖 dependencies { implementation "org.apache.skywalking:apm-toolkit-logback-1.x" testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation "org.junit.jupiter:junit-jupiter-api:${junitVersion}" testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${junitVersion}" } sourceSets { main { resources { srcDirs("${rootProject.projectDir}/doc/spring-cloud-config") } } } test { useJUnitPlatform() } jib{ String imageName = "harbor.sino-assist.com/marsal1212/java11:latest" from{ image = imageName } to{ image = "harbor.sino-assist.com/sa-server/${project.name}:${project.properties.get('docker_version')}" } container{ environment = [active_profile:'dev', nacos_address:'', nacos_password:'nacos', project_name:"", namespace:"", params: "", nativeIp: "", limitMemory: "1G", reservationsMemory: "1G"] creationTime = DateTimeFormatter.ISO_INSTANT.format(Instant.now()) entrypoint = ["/bin/sh", "-c", 'java -javaagent:/skywalking-agent/skywalking-agent.jar -Dskywalking.trace.ignore_path=/actuator,/actuator/* ' + ' -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=${namespace}-skywalking-oap:11800 -DSW_AGENT_NAME=$project_name ' + ' -DSW_AGENT_INSTANCE_NAME=$project_name:${nativeIp} -Dspring.cloud.nacos.discovery.metadata.ip=${nativeIp} ' + ' -Dspring.devtools.add-properties=false -Xms${reservationsMemory} -Xmx${limitMemory}' + ' -Dserver.port=8080 -Dspring.profiles.active=$active_profile -Dsa.nacos.namespace=$namespace ' + ' -Dsa.nacos.password=$nacos_password -Dsa.nacos.addr=$nacos_address $params -Dfile.encoding=UTF-8 ' + ' -cp @/app/jib-classpath-file @/app/jib-main-class-file' ] } } afterEvaluate { bootJar { layered { application { intoLayer("spring-boot-loader") { include "org/springframework/boot/loader/**" } intoLayer("application") } dependencies { intoLayer("application") { includeProjectDependencies() } intoLayer("snapshot-dependencies") { include "*:*:*SNAPSHOT*" } intoLayer("dependencies") } layerOrder = ["dependencies", "spring-boot-loader", "snapshot-dependencies", "application"] } } } } } // 在文件底部更新gradle wrapper的版本 task updateWrapper(type: UpdateWrapper) { gradleVersion = '8.7' } // 自定义任务用于更新wrapper class UpdateWrapper extends DefaultTask { @Input String gradleVersion @TaskAction void update() { File wrapperDir = new File(project.getProjectDir(), "gradle/wrapper") File propertiesFile = new File(wrapperDir, "gradle-wrapper.properties") Properties properties = new Properties() propertiesFile.withInputStream { input -> properties.load(input) } properties.setProperty("distributionUrl", "https://services.gradle.org/distributions/gradle-$gradleVersion-bin.zip") properties.setProperty("distributionSha256Sum", "some-sha-sum") // 这里填写正确的SHA-256校验和 propertiesFile.withOutputStream { output -> properties.store(output, null) } File wrapperJar = new File(wrapperDir, "gradle-wrapper.jar") if (wrapperJar.exists()) { wrapperJar.delete() } } }