logo
1
0
WeChat Login
feat: 删除Kotlin Multiplatform高级模块及相关配置,更新settings.gradle.kts以移除该模块的引用

天气查询命令行应用

这是一个简单的命令行天气查询应用,基于我们自主开发的weather-api库构建。本应用支持通过城市名称或地理坐标查询全球主要城市的天气信息。

功能特性

  • 通过城市名称查询当前天气
  • 通过地理坐标查询当前天气
  • 支持交互式和非交互式两种运行模式
  • 支持作为独立的可执行JAR文件分发和使用

运行方式

本应用提供多种运行方式,可以根据需要选择最方便的方式:

方式1:使用脚本运行(推荐)

这是最简单的运行方式,脚本会自动处理JAR文件的构建和运行。

Linux/macOS:

cd modules/weather-app # 赋予脚本执行权限 chmod +x run-weather-app.sh # 交互式模式运行 ./run-weather-app.sh # 非交互式模式运行(自动查询北京天气) ./run-weather-app.sh --non-interactive

Windows:

REM 交互式模式运行 run-weather-app.bat REM 非交互式模式运行(自动查询北京天气) run-weather-app.bat --non-interactive

方式2:使用可执行JAR文件运行

如果已经构建了可执行JAR文件,可以直接使用Java命令运行:

# 交互式模式 java -jar build/libs/weather-app-1.0-SNAPSHOT.jar # 非交互式模式 java -jar build/libs/weather-app-1.0-SNAPSHOT.jar --non-interactive

方式3:使用Gradle运行(开发模式)

在开发过程中,可以直接使用Gradle运行应用:

# 在项目根目录运行 ./gradlew :modules:weather-app:runNonInteractive

构建应用

如果需要自行构建应用,可以使用以下命令:

# 构建应用 ./gradlew :modules:weather-app:build # 只构建可执行JAR文件 ./gradlew :modules:weather-app:packageExecutable

构建成功后,可执行JAR文件将位于build/libs/weather-app-1.0-SNAPSHOT.jar

使用说明

交互式模式

启动应用后,将看到一个简单的命令行界面:

=== 天气查询应用 === 这个应用使用了我们自己开发并发布到本地Maven仓库的weather-api库 当前使用的天气服务: Mock Weather Service 请选择操作: 1. 按城市名称查询天气 2. 按坐标查询天气 0. 退出 >
  1. 输入1可以按城市名称查询天气

    • 支持的城市包括:beijing, shanghai, guangzhou, shenzhen, new york, london, tokyo, sydney
  2. 输入2可以按坐标查询天气

    • 例如北京的坐标:纬度39.9042,经度116.4074
  3. 输入0退出应用

非交互式模式

在非交互式模式下,应用将自动查询北京的天气信息,无需用户输入,适合在脚本或自动化环境中使用。

示例输出

以下是查询北京天气的示例输出:

=== 北京 天气信息 === 所在地区: 北京市, 中国 当前温度: 23.5°C 天气状况: 晴天 风速: 15 km/h, 风向: NE 气压: 1012 mb 湿度: 45% 云量: 10% 体感温度: 24°C 能见度: 8 km 本地时间: 2023-06-15T14:30:00+08:00[Asia/Shanghai]

依赖说明

本应用主要依赖于以下库:

  • weather-api: 我们自主开发的天气服务库
  • kotlinx-coroutines-core: Kotlin协程库,用于处理异步操作

切换依赖方式

本应用可以通过两种方式依赖weather-api库:

  1. 项目内部依赖(默认): 直接依赖于项目中的weather-api模块,适合开发阶段。

    implementation(project(":modules:weather-api"))
  2. Maven仓库依赖: 从Maven本地仓库加载已发布的weather-api库,适合测试发布效果或分发应用。

    implementation("com.example:weather-api:1.0.0")

要切换依赖方式,请编辑build.gradle.kts文件,注释/取消注释相应的依赖声明。切换后需要重新构建应用:

./gradlew clean build

从源码构建

如果你从源码构建整个项目,请按照以下步骤操作:

  1. 克隆项目(如果尚未克隆)

    git clone <项目仓库URL> cd <项目目录>
  2. 发布weather-api库到本地Maven仓库(如果需要测试Maven依赖)

    cd modules/weather-api ./publish-to-maven.sh # 或 publish-to-maven.bat (Windows) cd ../weather-app
  3. 构建并运行weather-app

    ./run-weather-app.sh # 或 run-weather-app.bat (Windows)

打包和分发

如果你想将本应用分发给他人使用,只需要:

  1. 构建可执行JAR:

    ../gradlew packageExecutable
  2. 分发build/libs/weather-app-1.0-SNAPSHOT.jar文件

接收者只需要安装Java 8或更高版本,然后使用以下命令运行:

java -jar weather-app-1.0-SNAPSHOT.jar

注意事项

  • 在首次运行时,系统会自动构建可执行JAR文件,这可能需要一些时间
  • 应用默认使用模拟的天气数据,实际天气信息可能有所不同
  • 如需使用真实天气API,请修改weather-api库中的配置并设置API密钥

故障排除

如果在使用过程中遇到问题,可以尝试以下解决方案:

无法构建应用

问题: 运行脚本时出现构建错误。 解决方案:

  1. 确保已安装Java 8或更高版本:java -version
  2. 确保Gradle可以正常运行:../gradlew --version
  3. 尝试清理构建目录:../gradlew clean
  4. 检查构建日志获取详细错误信息

运行时出现"找不到类"错误

问题: 运行JAR文件时出现ClassNotFoundException或类似错误。 解决方案:

  1. 确保使用了packageExecutable任务构建JAR,而不是标准的jar任务
  2. 检查构建的JAR文件是否包含所有依赖:jar tvf build/libs/weather-app-1.0-SNAPSHOT.jar
  3. 重新构建应用:../gradlew clean packageExecutable

许可证

本项目采用MIT许可证。详情请参阅项目根目录中的LICENSE文件。