无锡网站网站建设上海互联网网站建设
2026/1/5 20:21:26 网站建设 项目流程
无锡网站网站建设,上海互联网网站建设,找人做logo网站,app推广刷量#x1f3af; 核心概念 在 Gradle 构建系统中#xff0c;这三个文件各司其职#xff0c;共同完成项目的构建管理#xff1a;文件角色定位通俗比喻settings.gradle项目结构管理员#x1f3d7;️ 建筑设计图 - 定义有哪些房间#xff08;模块#xff09;gradle.properties… 核心概念在 Gradle 构建系统中这三个文件各司其职共同完成项目的构建管理文件角色定位通俗比喻settings.gradle项目结构管理员️ 建筑设计图 - 定义有哪些房间模块gradle.properties配置参数库⚙️ 配置面板 - 存储各种开关和参数build.gradle构建逻辑执行者 施工方案 - 如何建造每个房间 三大配置文件对比快速对比表对比项settings.gradlegradle.propertiesbuild.gradle执行时机最先执行初始化阶段第二执行属性加载最后执行配置/执行阶段作用范围整个项目多模块全局属性单个项目/子模块主要职责定义项目结构存储配置参数定义构建逻辑是否必需✅ 多模块项目必需❌ 可选建议有✅ 必需配置语言Groovy/Kotlin DSLProperties 格式Groovy/Kotlin DSL典型内容include 模块声明keyvalue 配置plugins、dependencies、tasks️ settings.gradle 详解核心作用定位项目的组织架构图告诉 Gradle 这个项目包含哪些子模块。执行时机Gradle 构建的第一步在任何其他脚本之前执行。本项目实例分析// 定义根项目名称rootProject.nameplat_index// 包含子模块 - 扁平化声明includeymt-generatorincludeymt-deploy// ymt平台 - 三层架构includeymt-platformincludeymt-platform:ymt-common// 通用层includeymt-platform:ymt-common:ymt-common-core// 核心工具includeymt-platform:ymt-common:ymt-common-redis// Redis组件// ... 更多通用模块includeymt-platform:ymt-modules// 业务层includeymt-platform:ymt-modules:ymt-metadata// 元数据模块includeymt-platform:ymt-modules:ymt-quality// 质量模块// ... 更多业务模块includeymt-platform:ymt-application// 应用层includeymt-platform:ymt-application:ymt-admin-app// 管理后台includeymt-platform:ymt-application:ymt-monitor-app// 监控应用// ... 更多应用模块关键知识点1. 模块路径语法// 语法格式父模块:子模块includeymt-platform:ymt-common:ymt-common-core// 等价于目录结构// ymt-platform/// └─ ymt-common/// └─ ymt-common-core/2. 项目名称的重要性rootProject.nameplat_index影响生成的 JAR/WAR 文件名前缀IDEA/Eclipse 项目显示名称Maven 仓库发布的 artifactId如未单独指定3. 本项目的模块架构plat_index (根项目) ├─ ymt-generator # 代码生成器独立模块 ├─ ymt-deploy # 部署工具独立模块 ├─ ymt-jpom # 运维管理独立模块 └─ ymt-platform # 核心平台多层架构 ├─ ymt-common # 通用层17个组件模块 │ ├─ ymt-common-core # 核心工具 │ ├─ ymt-common-redis # Redis封装 │ ├─ ymt-common-mybatis # MyBatis增强 │ └─ ... # 其他14个通用组件 ├─ ymt-modules # 业务层7个业务模块 │ ├─ ymt-metadata # 元数据管理 │ ├─ ymt-quality # 质量管理 │ ├─ ymt-datasync # 数据同步 │ └─ ... # 其他4个业务模块 └─ ymt-application # 应用层3个启动应用 ├─ ymt-admin-app # 管理后台 :8086 ├─ ymt-monitor-app # 监控服务 :8087 └─ ymt-snailjob-app # 定时任务 :8088常见操作添加新模块// 在 settings.gradle 中添加includeymt-platform:ymt-modules:ymt-new-module动态包含模块高级用法// 根据条件包含模块if(System.getenv(INCLUDE_DEMO)true){includeymt-platform:ymt-modules:ymt-demo}⚙️ gradle.properties 详解核心作用定位项目的配置中心存储键值对形式的配置参数。执行时机在 settings.gradle 之后、build.gradle 之前加载。特点✅ 简单的keyvalue格式✅ 可被 build.gradle 中的变量引用✅ 支持环境变量和系统属性✅ 便于版本控制和团队协作本项目实例分析1. Gradle 性能优化配置# JVM 参数 - 构建时的内存配置 org.gradle.jvmargs-Xmx4g -Xms2g -XX:MaxMetaspaceSize2g # 并行构建 - 多模块项目必开 org.gradle.paralleltrue # 按需配置 - 只配置需要的模块 org.gradle.configureondemandtrue # 构建缓存 - 避免重复构建 org.gradle.cachingtrue解读Xmx4g最大堆内存 4GB大型项目建议 4-8GBparalleltrue并行构建充分利用多核 CPUcachingtrue启用增量构建只编译改动的部分2. 插件版本管理# Spring Boot 插件版本 springBootPluginVersion3.4.7 # 依赖管理插件版本 dependencyManagementPluginVersion1.1.4为什么放在这里// ❌ 错误在 build.gradle 的 ext 块中定义ext{springBootPluginVersion3.4.7}// ❌ 问题plugins 块执行时ext 块还未初始化plugins{idorg.springframework.bootversion$springBootPluginVersion// 报错}// ✅ 正确在 gradle.properties 中定义// gradle.properties: springBootPluginVersion3.4.7// ✅ build.gradle 中直接引用plugins{idorg.springframework.bootversion$springBootPluginVersion// 成功}3. 系统属性配置# 系统级编码设置 systemProp.file.encodingUTF-8 systemProp.console.encodingUTF-8 systemProp.user.languagezh systemProp.user.countryCN作用这些配置会作为 JVM 系统属性传递等价于java -Dfile.encodingUTF-8 -Duser.languagezh -jar app.jar4. 应用配置占位符# 日志级别 logging.levelinfo # Spring 环境配置 profiles.activedev # 监控服务账号 monitor.usernameymt monitor.passwordymt123用途这些值会在构建时替换到application.yml中的...占位符。# application.ymllogging:level:org.dromara:logging.level# 构建后变成 infospring:profiles:active:profiles.active# 构建后变成 dev配置层级Gradle 会按优先级加载多个gradle.properties文件优先级从高到低 1. 命令行参数 -Pprofiles.activeprod 2. ~/.gradle/ 用户主目录全局配置 3. 项目根目录 当前项目专属配置 ⭐ 4. GRADLE_USER_HOME Gradle 安装目录常见使用场景场景1切换环境配置# 开发环境 profiles.activedev # 测试环境注释当前启用下面 # profiles.activetest # 生产环境 # profiles.activeprod场景2敏感信息管理# ❌ 不要这样做会提交到 Git database.password123456 # ✅ 正确做法使用环境变量 database.password${DB_PASSWORD}配合.gitignore# 本地配置文件不提交 gradle-local.properties# gradle.properties提交到 Git database.passwordplaceholder # gradle-local.properties本地覆盖不提交 database.passwordreal_password_here build.gradle 详解核心作用定位项目的构建脚本定义如何编译、测试、打包项目。执行时机在 settings.gradle 和 gradle.properties 之后执行。特点 使用 Groovy DSL领域特定语言 支持插件、依赖、任务定义 可编写自定义构建逻辑本项目实例分析1. 插件配置块plugins{idjava-platform// Java 平台插件idorg.springframework.bootversion$springBootPluginVersion// Spring Boot 插件applyfalse// 不应用到根项目idio.spring.dependency-managementversion$dependencyManagementPluginVersionapplyfalse}关键点apply false声明插件但不应用让子模块自行决定是否应用$springBootPluginVersion引用gradle.properties中的变量2. ext 扩展属性块ext{// 项目基本信息projectGroupcom.ymtprojectVersion1.0.0-SNAPSHOT// Java 版本javaVersion17// 框架版本100 个依赖版本springBootVersionspringBootPluginVersion springFrameworkVersion6.2.7mybatisPlusVersion3.5.12hutoolVersion5.8.38// ... 省略 90 个版本定义}作用统一管理所有依赖版本子模块通过rootProject.ext.hutoolVersion引用避免版本冲突3. java-platform 依赖约束javaPlatform{allowDependencies()// 允许平台项目声明依赖}dependencies{// 导入 Spring Boot BOMapiplatform(org.springframework.boot:spring-boot-dependencies:${springBootVersion})constraints{// 约束所有依赖的版本apicn.hutool:hutool-core:${hutoolVersion}apicom.baomidou:mybatis-plus-boot-starter:${mybatisPlusVersion}// ... 200 个版本约束}}工作原理根项目 build.gradle (java-platform) ↓ 定义版本约束 子模块 build.gradle ↓ 只声明依赖不指定版本 dependencies { implementation cn.hutool:hutool-core // 自动使用 5.8.38 }优势✅ 版本集中管理避免冲突✅ 子模块简洁无需指定版本号✅ 升级方便只改根项目4. allprojects 全局配置allprojects{grouprootProject.ext.projectGroup// 统一 groupIdversionrootProject.ext.projectVersion// 统一版本号// 统一编码配置tasks.withType(JavaCompile){options.encodingUTF-8}// Maven 占位符替换afterEvaluate{tasks.withType(ProcessResources).configureEach{task-// 替换 ... 占位符task.filesMatching([**/*.yml,**/*.yaml]){filter(ReplaceTokens,tokens:[profiles.active:project.findProperty(profiles.active),projectVersion:rootProject.ext.projectVersion])}}}}解读allprojects {}应用到所有项目包括根项目和子模块afterEvaluate {}在项目评估完成后执行ProcessResources资源文件处理任务5. subprojects 子模块配置subprojects{repositories{// 使用阿里云镜像maven{urlhttps://maven.aliyun.com/repository/public}maven{urlhttps://maven.aliyun.com/repository/central}mavenCentral()}}解读subprojects {}只应用到子模块不包括根项目配置 Maven 仓库地址6. 自定义任务// 打印版本号任务task printVersion{doLast{println projectVersion}}使用./gradlew printVersion# 输出1.0.0-SNAPSHOT本项目架构特色️ java-platform 架构模式根项目 (java-platform) - 只定义版本约束 - 不包含业务代码 - 作为 BOM (Bill of Materials) 子模块 - 引用根项目平台 - 声明依赖时不写版本 - 自动继承版本约束示例// 子模块的 build.gradledependencies{// ✅ 继承根项目的版本管理implementationplatform(project(:))// ✅ 不需要写版本号implementationcn.hutool:hutool-coreimplementationcom.baomidou:mybatis-plus-boot-starter} 三层架构映射// settings.gradle 中的模块组织ymt-platform ├─ ymt-common → 通用层基础设施 ├─ ymt-modules → 业务层领域逻辑 └─ ymt-application → 应用层启动入口对应到 Spring Boot 分层架构ymt-common → Infrastructure Layer (基础设施层) ymt-modules → Domain Layer (领域层) ymt-application → Application Layer (应用层) 三者协作流程Gradle 构建生命周期开始构建初始化阶段读取 settings.gradle确定项目结构加载 gradle.properties配置阶段执行 build.gradle创建任务依赖图执行阶段运行选定任务构建完成详细执行流程阶段 1初始化Initialization1. Gradle 启动 ↓ 2. 查找 settings.gradle ↓ 3. 执行 settings.gradle - 设置 rootProject.name plat_index - include 所有子模块 ↓ 4. 构建项目树结构输出示例Root project plat_index --- Project :ymt-platform | --- Project :ymt-platform:ymt-common | | --- Project :ymt-platform:ymt-common:ymt-common-core | | --- Project :ymt-platform:ymt-common:ymt-common-redis | --- Project :ymt-platform:ymt-modules | | --- Project :ymt-platform:ymt-modules:ymt-metadata阶段 2配置Configuration1. 加载 gradle.properties - 读取所有 keyvalue 配置 - 设置系统属性systemProp.* - 配置 Gradle 守护进程参数 ↓ 2. 执行根项目的 build.gradle - 应用插件 - 定义 ext 属性 - 配置 dependencies 约束 ↓ 3. 执行子模块的 build.gradle - 引用根项目的版本管理 - 声明模块依赖 - 配置特定任务 ↓ 4. 创建任务依赖关系图DAG阶段 3执行Execution1. 根据命令行参数确定要执行的任务 例如./gradlew build ↓ 2. 解析任务依赖 build → classes → compileJava → ... ↓ 3. 按依赖顺序执行任务 - 并行执行独立任务如果开启 parallel - 增量编译只编译改动的文件 - 利用缓存如果开启 caching ↓ 4. 生成构建产物实际案例执行./gradlew build时# 1. settings.gradle 执行Configure project:Root projectplat_indexincludes50 subprojects# 2. gradle.properties 生效Using Gradle properties:paralleltrue,cachingtrueJVM arguments: -Xmx4g -Xms2g# 3. build.gradle 配置Configuring root projectplat_indexApplying plugin: java-platformConfiguring50 subprojects...# 4. 任务执行Task :ymt-platform:ymt-common:ymt-common-core:compileJavaTask :ymt-platform:ymt-modules:ymt-metadata:compileJavaTask :ymt-platform:ymt-application:ymt-admin-app:bootJar BUILD SUCCESSFULin2m 15s 最佳实践1. settings.gradle 最佳实践✅ 推荐做法// 使用描述性的项目名称rootProject.nameymt-platform// 模块分组便于维护// 通用组件includeymt-common:ymt-common-coreincludeymt-common:ymt-common-redis// 业务模块includeymt-modules:ymt-metadataincludeymt-modules:ymt-quality// 应用模块includeymt-application:ymt-admin-app❌ 避免做法// ❌ 不要在 settings.gradle 中写业务逻辑includemodule1printlnBuilding module1...// 不要这样// ❌ 不要动态修改模块路径project(:module1).projectDirnewFile(other-location)// 不推荐2. gradle.properties 最佳实践✅ 推荐做法# 分类组织配置 # # Gradle 性能配置 # org.gradle.paralleltrue org.gradle.cachingtrue # # 插件版本 # springBootPluginVersion3.4.7 # # 应用配置 # profiles.activedev❌ 避免做法# ❌ 不要存储敏感信息 database.passwordreal_password # 危险 # ❌ 不要使用特殊字符 app.nameMy App # 空格可能导致问题 # ✅ 应该这样 app.nameMyApp3. build.gradle 最佳实践✅ 推荐做法// 清晰的结构组织plugins{// 插件声明}ext{// 扩展属性}dependencies{// 依赖声明}tasks{// 任务配置}❌ 避免做法// ❌ 硬编码版本号dependencies{implementationcn.hutool:hutool-core:5.8.38// 不好}// ✅ 使用变量dependencies{implementationcn.hutool:hutool-core:${hutoolVersion}// 好}4. 版本管理策略本项目采用的策略BOM Platform根项目 (java-platform) ├─ ext { 定义版本变量 } └─ dependencies.constraints { 约束版本 } 子模块 └─ dependencies { 声明依赖不写版本 }优势✅ 单点维护统一升级✅ 避免版本冲突✅ 子模块配置简洁5. 多环境配置推荐方案Profile Properties# gradle.properties (默认) profiles.activedev # gradle-test.properties (测试环境) profiles.activetest # gradle-prod.properties (生产环境) profiles.activeprod使用# 开发环境./gradlew build# 测试环境./gradlew build -Pprofiles.activetest# 生产环境./gradlew build -Pprofiles.activeprod

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询