You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过CMake生成source.jar(无需Maven支持)

不依赖Maven,用CMake生成source.jar的实现方法

可以通过CMake的自定义命令和目标手动构建source.jar,无需依赖Maven,具体步骤如下:

  • 收集Java源码文件
    先通过CMake的文件匹配命令获取项目中的所有Java源码,根据你的项目结构调整路径:

    # 递归收集src/main/java下的所有.java文件
    file(GLOB_RECURSE JAVA_SOURCES
        src/main/java/*.java
    )
    

    注:如果新增源码文件后未被识别,需要重新运行CMake配置;也可以手动列出源码文件替代GLOB,避免遗漏。

  • 定义生成source.jar的自定义命令
    利用系统的jar工具(CMake的UseJava模块会自动检测并设置${Java_JAR_EXECUTABLE}变量),编写打包命令:

    add_custom_command(
        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/source.jar
        # -C 参数切换到源码根目录,保证打包后的路径结构正确
        COMMAND ${Java_JAR_EXECUTABLE} cvf ${CMAKE_CURRENT_BINARY_DIR}/source.jar -C ${CMAKE_SOURCE_DIR} src/main/java
        DEPENDS ${JAVA_SOURCES}
        COMMENT "正在生成source.jar..."
    )
    

    如果源码分布在多个目录,可以添加多个-C参数,比如:

    COMMAND ${Java_JAR_EXECUTABLE} cvf ${CMAKE_CURRENT_BINARY_DIR}/source.jar 
        -C ${CMAKE_SOURCE_DIR} src/main/java 
        -C ${CMAKE_SOURCE_DIR} src/common/java
    
  • 创建自定义目标关联打包命令
    定义一个CMake目标,让你可以通过构建命令触发source.jar的生成:

    # 添加ALL参数会让每次默认构建都生成source.jar,不加则需要手动调用目标名
    add_custom_target(generate_source_jar ALL
        DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/source.jar
    )
    
  • (可选)关联已有二进制Jar目标
    如果希望生成二进制Jar时自动同步生成source.jar,可以添加依赖:

    # 替换为你用add_jar创建的二进制Jar目标名
    add_dependencies(your_binary_jar_target generate_source_jar)
    
  • (可选)安装source.jar
    如果需要将source.jar安装到指定目录,添加install命令:

    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/source.jar
        DESTINATION lib
    )
    

内容的提问来源于stack exchange,提问作者ahalsnad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 15:06:01