Skip to content

[Feature][Linkis]Optimize project build time - reduce compilation duration from 1 hour #5321

Description

@kinghao007

Description / 问题描述

English:
The current Linkis project build time is relatively long, a full compilation may take a significant amount of time depending on the environment. This impacts developer productivity and CI/CD pipeline efficiency. We need to optimize the build process to improve compilation performance.

中文:
当前 Linkis 项目的编译时间较长,完整编译根据环境不同可能需要较长时间。这影响了开发者的工作效率和 CI/CD 流水线的执行效率。我们需要优化构建过程以提升编译性能。

Current Behavior / 当前行为

English:

  • Full project compilation takes a long time (varies by environment, typically 30-60+ minutes)
  • Incremental builds are not fully optimized
  • Maven dependency resolution can be slow on first build
  • All tests run during default build, adding overhead

中文:

  • 完整项目编译耗时较长(因环境而异,通常 30-60+ 分钟)
  • 增量构建未完全优化
  • 首次构建时 Maven 依赖解析可能较慢
  • 默认构建时运行所有测试,增加了额外开销

Expected Behavior / 期望行为

English:

  • Significant reduction in full build time (target: 30-50% improvement)
  • Faster incremental builds for better development iteration
  • Optimized dependency resolution and caching
  • Flexible build profiles for different scenarios (quick build, full build, CI build)

中文:

  • 显著缩短完整构建时间(目标:提升 30-50%)
  • 加快增量构建速度,改善开发迭代体验
  • 优化依赖解析和缓存机制
  • 提供灵活的构建配置文件以适应不同场景(快速构建、完整构建、CI 构建)

Proposed Solutions / 建议解决方案

1. Maven Build Optimization / Maven 构建优化

English:

  • Enable parallel module builds with -T option (e.g., -T 1C for 1 thread per CPU core)
  • Consider Maven Daemon (mvnd) for faster JVM startup and build caching
  • Optimize pom.xml plugin configurations to skip unnecessary phases
  • Use local repository mirror or caching proxy for faster dependency resolution

中文:

  • 使用 -T 选项启用并行模块构建(如 -T 1C 每 CPU 核心 1 线程)
  • 考虑使用 Maven Daemon (mvnd) 加速 JVM 启动和构建缓存
  • 优化 pom.xml 插件配置,跳过不必要的阶段
  • 使用本地仓库镜像或缓存代理加速依赖解析

2. Build Profile Optimization / 构建配置优化

English:

  • Create a quick profile that skips tests, javadoc, and source generation
  • Create a ci profile optimized for CI/CD environments
  • Document recommended build commands for different use cases

中文:

  • 创建 quick 配置文件,跳过测试、javadoc 和源码生成
  • 创建针对 CI/CD 环境优化的 ci 配置文件
  • 为不同使用场景记录推荐的构建命令

3. Module Dependency Optimization / 模块依赖优化

English:

  • Analyze and optimize inter-module dependencies
  • Reduce unnecessary transitive dependencies
  • Consider lazy module loading where applicable

中文:

  • 分析并优化模块间依赖关系
  • 减少不必要的传递依赖
  • 在适用的情况下考虑延迟模块加载

4. Test Execution Optimization / 测试执行优化

English:

  • Enable parallel test execution with maven-surefire-plugin
  • Separate unit tests from integration tests
  • Provide option to run tests selectively by module

中文:

  • 使用 maven-surefire-plugin 启用并行测试执行
  • 分离单元测试和集成测试
  • 提供按模块选择性运行测试的选项

Acceptance Criteria / 验收标准

English:

  • Measurable improvement in build time (benchmark before and after)
  • Add build profiles for quick/full/CI builds
  • Document optimized build commands in developer guide
  • No regression in build output or test coverage

中文:

  • 构建时间有可衡量的提升(优化前后基准测试对比)
  • 添加快速/完整/CI 构建的配置文件
  • 在开发者指南中记录优化后的构建命令
  • 构建产物和测试覆盖率无回归

Environment / 环境信息

  • Linkis Version: 1.x
  • Java Version: JDK 8/11
  • Build Tool: Maven 3.x
  • OS: Linux/MacOS/Windows

Note: Build time varies significantly based on hardware (CPU cores, memory, disk speed), network conditions, and local Maven repository state.

注意:构建时间因硬件配置(CPU 核心数、内存、磁盘速度)、网络条件和本地 Maven 仓库状态而有显著差异。

References / 参考资料

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions