gradle环境构建
大约 7 分钟
配置文件
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.6-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#org.gradle,jvmargs=-Dfile.encoding=UTF-8
project_group=com.yix
project_version=1.0
project_jdk=17
ext.versions = [
springboot : '2.6.13', // SpringBoot版本号
springcloud : '2021.0.5', // SpringCloud版本号
alibabacloud : '2021.0.5.0', // SpringCloudAlibaba版本号
lombok : '1.18.20', // Lombok版本号
mapstruct : '1.5.5.Final', // mapstruct转换版本号
junit : '5.9.3', // 配置JUnit测试工具的版本编号
junitPlatform : '1.9.3', // JUnit测试工具运行平台版本编号
mysqlJ : '8.0.33', // MySQL驱动的版本
druid : '1.2.21', // Druid版本
springJdbc : '5.3.31', // SpringJDBC版本
mybatis : '3.5.7', // MyBatis的开发版本
mybatisPlus : '3.5.5', // MyBatisPlus依赖版本
mybatisSpringBoot : '2.2.0', // Mybatis-SpringBoot整合依赖
swagger : '3.0.0', // Swagger版本号
springdoc : '2.4.0', // Swagger版本号
springdocUi : '1.7.0', // Swagger版本号
knife4j : '4.5.0', // knife4j版本号
hutool : '5.8.26', // hutool
commonsLang3 : '3.12.0', // commonsLang3
commonsIo : '2.15.1', // commons-io
commonsFileupload : '1.5', // commonsFileupload
poiOoxml : '5.2.5', // poiOoxml
nacos : '2.3.1', // Nacos版本号
httpclient5 : '5.3.1', // httpclient5
feignHc5 : '13.2.1', // httpclient5
httpclient : '4.5.13', // httpclient5
feignHttpclient : '11.8', // httpclient5
sentinel : '1.8.7', // Sentinel版本号
caffeine : '3.1.8', // Caffeine缓存组件版本号
micrometer : '1.12.4', // Prometheus相关监控依赖,与服务部署的版本号相同
servlet : '4.0.1', // Servlet的依赖库
commonsCodec : '1.15', // codec依赖库
jjwt : '0.9.1', // jwt依赖库
jaxb : '2.3.0', // JAXB依赖库
admin : '2.6.11', // SpringBootAdmin依赖版本
rocketmq : '5.2.0', // RocketMQ的依赖库版本
scsRocketMQ : '2021.1', // SpringCloudStream依赖库版本
cloudSeata : '2021.1',
seata : '2.0.0',
hibernateValidator: '8.0.1.Final', // JSR303验证库
]
ext.libraries = [
'spring-boot-gradle-plugin' : "org.springframework.boot:spring-boot-gradle-plugin:${versions.springboot}",
'spring-cloud-dependencies' : "org.springframework.cloud:spring-cloud-dependencies:${versions.springcloud}",
'spring-cloud-alibaba-dependencies' : "com.alibaba.cloud:spring-cloud-alibaba-dependencies:${versions.alibabacloud}",
// 以下的配置为与项目用例测试有关的依赖
'junit-jupiter-api' : "org.junit.jupiter:junit-jupiter-api:${versions.junit}",
'junit-vintage-engine' : "org.junit.vintage:junit-vintage-engine:${versions.junit}",
'junit-jupiter-engine' : "org.junit.jupiter:junit-jupiter-engine:${versions.junit}",
'junit-platform-launcher' : "org.junit.platform:junit-platform-launcher:${versions.junitPlatform}",
'junit-platform-engine' : "org.junit.platform:junit-platform-engine:${versions.junitPlatform}",
'junit-jupiter-params' : "org.junit.jupiter:junit-jupiter-params:${versions.junit}",
'junit-bom' : "org.junit:junit-bom:${versions.junit}",
'junit-platform-commons' : "org.junit.platform:junit-platform-commons:${versions.junitPlatform}",
// 以下的配置为Lombok组件有关的依赖
'lombok' : "org.projectlombok:lombok:${versions.lombok}",
//以下是mapstruct生成器相关配置
'mapstruct' : "org.mapstruct:mapstruct:$versions.mapstruct",
'mapstruct-processor' : "org.mapstruct:mapstruct-processor:$versions.mapstruct",
// 以下的配置为数据库开发所需要的依赖:
'mysql-connector-j' : "com.mysql:mysql-connector-j:${versions.mysqlJ}",
'druid-spring-boot-starter' : "com.alibaba:druid-spring-boot-starter:${versions.druid}",
'druid' : "com.alibaba:druid:${versions.druid}",
'mybatis' : "org.mybatis:mybatis:${versions.mybatis}",
'mybatis-spring-boot-starter' : "org.mybatis.spring.boot:mybatis-spring-boot-starter:${versions.mybatisSpringBoot}",
'mybatis-plus' : "com.baomidou:mybatis-plus:${versions.mybatisPlus}",
'mybatis-plus-boot-starter' : "com.baomidou:mybatis-plus-boot-starter:${versions.mybatisPlus}",
'spring-jdbc' : "org.springframework:spring-jdbc:${versions.springJdbc}",
// 以下的配置为Swagger有关的依赖库
'springfox-boot-starter' : "io.springfox:springfox-boot-starter:${versions.swagger}",
'springdoc-openapi-starter-webmvc-ui' : "org.springdoc:springdoc-openapi-starter-webmvc-ui:${versions.springdoc}",
'springdoc-openapi-ui' : "org.springdoc:springdoc-openapi-ui:${versions.springdocUi}",
'knife4j-openapi2-spring-boot-starter': "com.github.xiaoymin:knife4j-openapi2-spring-boot-starter:${versions.knife4j}",
'knife4j-openapi3-spring-boot-starter': "com.github.xiaoymin:knife4j-openapi3-spring-boot-starter:${versions.knife4j}",
//hutoll工具包
'hutool-all' : "cn.hutool:hutool-all:${versions.hutool}",
'commons-lang3' : "org.apache.commons:commons-lang3:$versions.commonsLang3",
'commons-io' : "commons-io:commons-io:$versions.commonsIo",
'commons-fileupload' : "commons-fileupload:commons-fileupload:$versions.commonsFileupload",
'poi-ooxml' : "org.apache.poi:poi-ooxml:$versions.poiOoxml",
// 以下的配置为Nacos有关的依赖库
'nacos-client' : "com.alibaba.nacos:nacos-client:${versions.nacos}",
//httpclient5
'httpclient' : "org.apache.httpcomponents:httpclient:${versions.httpclient}",
'feign-httpclient' : "io.github.openfeign:feign-httpclient:${versions.feignHttpclient}",
'httpclient5' : "org.apache.httpcomponents.client5:httpclient5:${versions.httpclient5}",
'httpclient5-fluent' : "org.apache.httpcomponents.client5:httpclient5-fluent:${versions.httpclient5}",
'feign-hc5' : "io.github.openfeign:feign-hc5:${versions.feignHc5}",
// 以下的配置为Sentinel有关的组件依赖
'sentinel-datasource-nacos' : "com.alibaba.csp:sentinel-datasource-nacos:${versions.sentinel}",
// 以下的配置为LoadBalancer所需要的Caffeine组件有关依赖
'caffeine' : "com.github.ben-manes.caffeine:caffeine:${versions.caffeine}",
// 以下的配置为Prometheus服务整合
'micrometer-registry-prometheus' : "io.micrometer:micrometer-registry-prometheus:${versions.micrometer}",
'micrometer-core' : "io.micrometer:micrometer-core:${versions.micrometer}",
// 以下的配置为JWT的服务整合
'servlet-api' : "javax.servlet:javax.servlet-api:${versions.servlet}",
'commons-codec' : "commons-codec:commons-codec:${versions.commonsCodec}",
'jjwt' : "io.jsonwebtoken:jjwt:${versions.jjwt}",
'jaxb-api' : "javax.xml.bind:jaxb-api:${versions.jaxb}",
'jaxb-impl' : "com.sun.xml.bind:jaxb-impl:${versions.jaxb}",
'jaxb-core' : "com.sun.xml.bind:jaxb-core:${versions.jaxb}",
// 以下的配置为SpringBootAdmin服务整合
'spring-boot-admin-starter-server' : "de.codecentric:spring-boot-admin-starter-server:${versions.admin}",
'spring-boot-admin-starter-client' : "de.codecentric:spring-boot-admin-starter-client:${versions.admin}",
// 以下的配置为RocketMQ相关服务的整合依赖
'rocketmq-client' : "org.apache.rocketmq:rocketmq-client:${versions.rocketmq}",
'rocketmq-acl' : "org.apache.rocketmq:rocketmq-acl:${versions.rocketmq}",
// 以下的配置为RocketMQ与SpringCloudStream整合服务所需要的依赖:
'spring-cloud-starter-stream-rocketmq': "com.alibaba.cloud:spring-cloud-starter-stream-rocketmq:${versions.scsRocketMQ}",
// 以下的配置为Seata相关的依赖库
'spring-cloud-starter-alibaba-seata' : "com.alibaba.cloud:spring-cloud-starter-alibaba-seata:${versions.cloudSeata}",
'seata-spring-boot-starter' : "io.seata:seata-spring-boot-starter:${versions.seata}",
// 以下的配置为HibernateValidator实现的JSR303验证标准依赖
'hibernate-validator' : "org.hibernate.validator:hibernate-validator:${versions.hibernateValidator}",
]
buildscript { // 定义脚本使用资源
apply from: 'dependencies.gradle' // 引入所需要的依赖库文件
repositories { // 脚本资源仓库
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://repo.spring.io/libs-milestone' }
}
dependencies { // 依赖库
classpath libraries.'spring-boot-gradle-plugin' // SpringBoot插件
}
}
group project_group // 组织名称
version project_version // 项目版本
apply from: 'dependencies.gradle' // 导入依赖配置
def env = System.getProperty("env") ?: 'dev' // 获取env环境属性
subprojects { // 配置子项目
apply plugin: 'java' // 子模块插件
apply plugin: 'java-library' // 引入之前的插件
apply plugin: 'org.springframework.boot' // 引入SpringBoot插件
apply plugin: 'io.spring.dependency-management' // 版本号管理
sourceCompatibility = project_jdk // 源代码版本
targetCompatibility = project_jdk // 生成类版本
repositories { // 配置Gradle仓库
mavenLocal() // Maven本地仓库
maven { // 阿里云仓库
allowInsecureProtocol = true
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
mavenCentral() // Maven远程仓库
}
dependencyManagement {// 版本控制插件
imports {
mavenBom libraries.'spring-cloud-dependencies' // SpringCloud依赖管理
mavenBom libraries.'spring-cloud-alibaba-dependencies' // SpringCloudAlibaba依赖管理
}
}
dependencies { // 公共依赖库管理
compileOnly('org.springframework.boot:spring-boot-devtools') // 项目热部署
// 以下为测试环境的相关依赖配置
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'junit', module: 'junit' // 移除Junit4
}
testImplementation(enforcedPlatform(libraries.'junit-bom')) // 绑定为JUnit5运行
testImplementation(libraries.'junit-platform-commons') // Junit5测试组件
testImplementation(libraries.'junit-platform-engine') // Junit5测试组件
testImplementation(libraries.'junit-jupiter-api') // Junit5测试组件
testImplementation(libraries.'junit-vintage-engine') // Junit5测试组件
testImplementation(libraries.'junit-jupiter-engine') // Junit5测试组件
testImplementation(libraries.'junit-platform-launcher') // Junit5测试组件
// 以下为Lombok插件的相关依赖配置
compileOnly(libraries.'lombok') // 编译时生效
annotationProcessor(libraries.'lombok') // 注解时生效
testCompileOnly(libraries.'lombok') // 注解时生效
testAnnotationProcessor(libraries.'lombok') // 注解时生效
implementation(libraries.'mapstruct')
testAnnotationProcessor(libraries.'mapstruct-processor') // 注解时生效
annotationProcessor(libraries.'mapstruct-processor')
}
sourceSets { // 源代码目录配置
main { // main及相关子目录配置
java { srcDirs = ['src/main/java'] }
resources { srcDirs = ['src/main/resources', "src/main/profiles/$env"] }
}
test { // test及相关子目录配置
java { srcDirs = ['src/test/java'] }
resources { srcDirs = ['src/test/resources'] }
}
}
test { // 配置测试任务
useJUnitPlatform() // 使用JUnit测试平台
}
task sourceJar(type: Jar, dependsOn: classes) { // 源代码的打包任务
archiveClassifier = '' // 设置文件的后缀
from sourceSets.main.allSource // 所有源代码的读取路径
}
task javadocTask(type: Javadoc) { // JavaDoc文档打包任务
options.encoding = 'UTF-8' // 设置文件编码
source = sourceSets.main.allJava // 定义所有的Java源代码
}
task javadocJar(type: Jar, dependsOn: javadocTask) { // 先生成JavaDoc再打包
archiveClassifier = 'javadoc' // 文件标记类型
from javadocTask.destinationDir // 通过JavadocTask任务中找到目标路径
}
tasks.withType(Javadoc) { // 文档编码配置
enabled = false
options.encoding = 'UTF-8' // 定义编码
}
tasks.withType(JavaCompile) { // 编译编码配置
options.encoding = 'UTF-8' // 定义编码
}
artifacts { // 最终的打包的操作任务
archives sourceJar // 源代码打包
archives javadocJar // javadoc打包
}
gradle.taskGraph.whenReady { // 在所有的操作准备好后触发
tasks.each { task -> // 找出所有的任务
if (task.name.contains('test')) { // 如果发现有test任务
// 如果将enabled设置为true表示要执行测试任务,如果设置为false表示不执行测试任务
task.enabled = true
}
}
}
[compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'// 编码配置
}
project(":yix-common") {
dependencies {
api("org.springframework.boot:spring-boot-starter-web")
annotationProcessor('org.springframework.boot:spring-boot-configuration-processor')
api("org.springframework.boot:spring-boot-starter-validation")
//swagger文档依赖
api(libraries.'knife4j-openapi3-spring-boot-starter')
//常用工具类
api(libraries.'hutool-all')
api(libraries.'commons-lang3')
api(libraries.'commons-io')
api(libraries.'commons-fileupload')
api(libraries.'poi-ooxml')
//多数据源依赖
api(libraries.'mysql-connector-j')
api(libraries.'druid')
api(libraries.'spring-jdbc')
api(libraries.'druid-spring-boot-starter')
api('org.springframework.boot:spring-boot-starter-aop')
api('org.springframework.boot:spring-boot-starter-actuator')
//集成mybatisplus
api(libraries.'mybatis-spring-boot-starter')
api(libraries.'mybatis-plus')
}
}
project(":yix-framwork") {
dependencies {
api(project(":yix-common"))
api('org.springframework.boot:spring-boot-starter-jta-atomikos')
}
}
project(":yix-admin") {
dependencies {
implementation(project(":yix-framwork"))
implementation(project(":yix-examples"))
}
}
project(":yix-examples") {
dependencies {
implementation(project(":yix-common"))
}
}
jar { enabled = true } // 允许打包为jar文件
bootJar { enabled = false } // 不允许打包为Boot执行文件
javadocJar { enabled = false } // 不需要打包为jar文件
javadocTask { enabled = false } // 不需要打包为doc文件
gradle.taskGraph.whenReady { // 在所有的操作准备好后触发
tasks.each { task -> // 找出所有的任务
if (task.name.contains('test')) { // 如果发现有test任务
// 如果将enabled设置为true表示要执行测试任务,如果设置为false表示不执行测试任务
task.enabled = false
}
}
}