Files
sa-charts/docker-swarm-review/build.gradle
2026-05-13 15:27:39 +08:00

338 lines
15 KiB
Groovy

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()
}
}
}