如何通过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
相关产品推荐
相关产品推荐

