338 lines
15 KiB
Groovy
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()
|
|
}
|
|
}
|
|
} |