这是一个简单的命令行天气查询应用,基于我们自主开发的weather-api库构建。本应用支持通过城市名称或地理坐标查询全球主要城市的天气信息。
本应用提供多种运行方式,可以根据需要选择最方便的方式:
这是最简单的运行方式,脚本会自动处理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
如果已经构建了可执行JAR文件,可以直接使用Java命令运行:
# 交互式模式
java -jar build/libs/weather-app-1.0-SNAPSHOT.jar
# 非交互式模式
java -jar build/libs/weather-app-1.0-SNAPSHOT.jar --non-interactive
在开发过程中,可以直接使用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可以按城市名称查询天气
输入2可以按坐标查询天气
输入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库:
项目内部依赖(默认):
直接依赖于项目中的weather-api模块,适合开发阶段。
implementation(project(":modules:weather-api"))
Maven仓库依赖:
从Maven本地仓库加载已发布的weather-api库,适合测试发布效果或分发应用。
implementation("com.example:weather-api:1.0.0")
要切换依赖方式,请编辑build.gradle.kts文件,注释/取消注释相应的依赖声明。切换后需要重新构建应用:
./gradlew clean build
如果你从源码构建整个项目,请按照以下步骤操作:
克隆项目(如果尚未克隆)
git clone <项目仓库URL>
cd <项目目录>
发布weather-api库到本地Maven仓库(如果需要测试Maven依赖)
cd modules/weather-api
./publish-to-maven.sh # 或 publish-to-maven.bat (Windows)
cd ../weather-app
构建并运行weather-app
./run-weather-app.sh # 或 run-weather-app.bat (Windows)
如果你想将本应用分发给他人使用,只需要:
构建可执行JAR:
../gradlew packageExecutable
分发build/libs/weather-app-1.0-SNAPSHOT.jar文件
接收者只需要安装Java 8或更高版本,然后使用以下命令运行:
java -jar weather-app-1.0-SNAPSHOT.jar
weather-api库中的配置并设置API密钥如果在使用过程中遇到问题,可以尝试以下解决方案:
问题: 运行脚本时出现构建错误。 解决方案:
java -version../gradlew --version../gradlew clean问题: 运行JAR文件时出现ClassNotFoundException或类似错误。
解决方案:
packageExecutable任务构建JAR,而不是标准的jar任务jar tvf build/libs/weather-app-1.0-SNAPSHOT.jar../gradlew clean packageExecutable本项目采用MIT许可证。详情请参阅项目根目录中的LICENSE文件。