Get Jobs v2.0.1 升级说明 - 使用更简单、更可靠、更强大的解决方案

85 阅读10分钟

🎉 Get Jobs v2.0.1 升级说明 - 更简单、更可靠、更强大的解决方案

一键启动,配置更灵活,部署更简单!

大家好!经过几天的优化和重构,Get Jobs 迎来了一次重要更新。这次升级的核心理念是:让使用更简单,让部署更可靠。如果你需要该工具,私信我吧~~

该升级是基于github.com/loks666/get…~~

📋 目录


🤔 为什么要升级?

旧版本的痛点

不知道你在使用旧版的过程中是不是也遇到了相同的问题。

  1. JAR 启动报错:无法使用jar启动,必须使用源码启动,需要了解的内容较多,以及安装jdk21
java -jar target\get_jobs-v2.0.1.jar
target\get_jobs-v2.0.1.jar中没有主清单属性
  1. 配置文件难找:不知道配置文件到底该放哪里,配置文件复杂
  2. 源码默认不启动任务投递简历的服务:增加配置目标投递简历的网站,选择性的投递,不需要修改源码
mvn exec:java
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< com.superxiang:get_jobs >-----------------------
[INFO] Building get_jobs v2.0.1
[INFO]   from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- exec:3.0.0:java (default-cli) @ get_jobs ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.376 s
[INFO] Finished at: 2025-10-21T11:05:07+08:00
[INFO] ------------------------------------------------------------------------
2025-10-21 11:05:07.585 [Thread-1] INFO  StartAll - 正在关闭线程池...
  1. 日志不够清晰:出问题了不知道从哪排查
  2. 代码复杂:文件加载逻辑复杂,维护困难

新版本的改进

智能文件加载 - 自动找到 JAR 同级目录的配置文件, 配置文件可以放在JAR同级目录,集中管理,方便维护

优先级清晰 - 启动参数 > JAR同级 > JAR内部

日志完善 - 每一步都有清晰的日志输出

解决源码中的bug - 解决源码中的bug,确保程序的正确运行

代码优化 - 代码优化,提高代码的可读性和可维护性

AI配置检测 - AI配置检测,确保AI配置的正确性

Boss过滤规则在外部维护 - Boss过滤规则在外部维护,方便维护,添加了日志,方便修改


效果截图如下: 启动的截图: 启动截图 浏览器截图如下: 浏览器截图

运行效果图

🚀 核心升级内容

1. 智能配置文件加载

现在的解决方案:

# 无论你在哪里运行
D:\work> java -jar D:\app\get_jobs.jar

# 程序自动去 JAR 所在目录找配置
✅ 找到了 D:\app\config.yaml
✅ 找到了 D:\app\.env
✅ 找到了 D:\app\boss\data.json

原理说明(技术细节):

程序会智能检测 JAR 文件的实际位置,而不是看你在哪个目录执行命令。这样无论你从哪里启动,都能正确加载配置文件。

2. 三级配置优先级

新版本支持三种方式指定配置文件,按优先级从高到低:

🥇 优先级1:启动参数(最灵活)
java -Dconfig.yaml=/custom/path/config.yaml \
     -D.env=/custom/path/.env \
     -Ddata.json=/custom/path/data.json \
     -jar get_jobs-v2.0.1.jar

适用场景:

  • 多环境部署(开发/测试/生产)
  • Docker 容器化部署
  • 集中式配置管理
🥈 优先级2:JAR 同级目录(最常用)
/opt/get_jobs/
├── get_jobs-v2.0.1.jar
├── config.yaml          ← 自动加载
├── .env                 ← 自动加载
└── boss/
    └── data.json       ← 自动加载

适用场景:

  • 本地运行
  • 服务器部署
  • 配置需要经常修改
🥉 优先级3:JAR 内部(默认配置)

程序内置的默认配置,打包时自动包含在 JAR 里。

适用场景:

  • 首次使用
  • 快速测试
  • 默认配置足够用

3. 统一平台管理

以前的问题:

想用哪个平台要去改代码,注释这个、取消注释那个,很麻烦。

现在的解决方案:

只需在 config.yaml 顶部配置:

# 启用的平台列表(想用哪个就写哪个)
enabled:
  - boss      # Boss 直聘
  - liepin    # 猎聘网
  # - lagou   # 不用拉勾就注释掉
  # - job51   # 不用51job也注释掉

# 下面是各平台的详细配置...
boss:
  keywords:
    - Java开发
  # ...

好处:

  • 不用改代码
  • 一目了然
  • 想启用哪个平台随时切换

4. AI 服务健康检查

智能检测 AI 是否可用:

[INFO] 正在检查 AI 服务连接...
[INFO] ✓ AI 服务连接正常,模型: gpt-4o-mini

如果 AI 不可用会怎么样?

[WARN] ✗ AI 服务响应异常,将跳过 AI 功能
[INFO] 使用默认打招呼语继续投递

不用担心!程序会自动降级:

  • AI 可用 → 使用智能打招呼语
  • AI 不可用 → 使用你配置的默认打招呼语
  • 投递功能不受影响!

5. 更清晰的日志

每一步都有详细的日志输出:

[INFO] 检测到JAR目录: D:\app\get_jobs
[INFO] 从JAR同级目录加载: D:\app\get_jobs\config.yaml
[INFO] 从JAR同级目录加载: D:\app\get_jobs\.env
[INFO] 正在检查 AI 服务连接...
[INFO] ✓ AI 服务连接正常,模型: gpt-4o-mini
[INFO] 启用的平台: boss, liepin
[INFO] 已提交 boss 任务
[INFO] 已提交 liepin 任务

出问题也能快速定位:

[DEBUG] JAR同级目录文件不存在: D:\app\config.yaml
[INFO] 从 classpath 加载资源: config.yaml
[INFO] 读取 data.json 数据成功!

🎯 一键启动指南

JAR 包部署(推荐生产)

1. 环境准备

确保已安装:

1. 安装jdk21 双击 jdk-21_windows-x64_bin.msi,点击下一步开始安装

2. 安装nodejs 双击 node-v22.21.0-x64.msi,点击下一步开始安装

3. 运行 run.bat,完成!你现在就可以开始登陆后自动投递简历了~~

目录结构应该是这样:

/opt/get_jobs/
├── get_jobs-v2.0.1.jar
├── jdk-21_windows-x64_bin.msi
├── node-v22.21.0-x64.msi
├── config.yaml # 投递简历配置
├── .env # 在线模型配置
├── run.bat # 启动脚本
└── boss/
    └── data.json # Boss过滤规则

方式三:自定义配置路径(高级)

适用场景:

  • 多环境部署
  • 配置文件集中管理
  • Docker 容器化

示例:

java -Dconfig.yaml=/etc/get_jobs/config.yaml \
     -D.env=/etc/get_jobs/.env \
     -Ddata.json=/etc/get_jobs/boss/data.json \
     -jar /opt/app/get_jobs-v2.0.1.jar

⚙️ 配置说明

必需环境变量(.env)

创建 .env 文件(从 .env_template 复制):

# AI 服务配置(可选,不配置则不使用 AI)
BASE_URL=https://api.ruyun.fun
API_KEY=sk-your-api-key-here
MODEL=gpt-4o-mini

# 企业微信推送(可选,不配置则不推送)
HOOK_URL=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx

# Bark 推送(可选,iOS 用户)
BARK_URL=https://api.day.app/your_key_here

说明:

  • BASE_URL - AI 服务地址(支持 OpenAI 兼容接口)
  • API_KEY - AI 服务密钥(以 sk- 开头)
  • MODEL - AI 模型名称(推荐 gpt-4o-mini
  • HOOK_URL - 企业微信机器人 Webhook 地址
  • BARK_URL - Bark 推送服务地址(iOS)

主配置文件(config.yaml)

1. 平台启用配置
# 启用的平台(最重要的配置)
enabled:
  - boss      # Boss 直聘
  - liepin    # 猎聘网
  # 不用的平台就注释掉或删除
2. Boss 直聘配置
boss:
  # 搜索关键词(必填)
  keywords:
    - Java开发工程师
    - Python开发
    - 后端开发
  
  # 城市列表(必填)
  cityCode:
    - 北京
    - 上海
    - 深圳
    - 杭州
  
  # 打招呼语(必填)
  sayHi: |
    您好,我对贵公司的这个岗位很感兴趣。
    我有X年相关工作经验,熟悉XXX技术栈。
    期待能有机会详细了解岗位信息,谢谢!
  
  # 启用 AI 功能(可选,默认 false)
  enableAI: true
  
  # 过滤不活跃 HR(可选,默认 false)
  filterDeadHR: true
  deadStatus:
    - 本月活跃
    - 今日活跃
  
  # 发送图片简历(可选,默认 false)
  sendImgResume: false
  
  # 期望薪资范围(可选,单位:K)
  expectedSalary: [20, 35]  # 20K-35K
  
  # 筛选条件(可选)
  jobType: 全职
  salary: 20-30K
  experience:
    - 3-5
    - 5-10
  degree:
    - 本科
    - 硕士
  scale:
    - 100-499
    - 500-999
  stage:
    - 已上市
    - D轮及以上
3. AI 配置
ai:
  # 自我介绍(必填,如果启用 AI)
  introduce: |
    我是一名Java后端工程师,有5年工作经验。
    熟悉Spring Boot、MySQL、Redis等技术栈。
    有大型互联网项目经验,擅长高并发系统设计。
  
  # 提示词模板(必填,如果启用 AI)
  prompt: |
    我的背景:%s
    目标岗位关键词:%s
    岗位名称:%s
    职位描述:%s
    默认打招呼语:%s
    
    请根据以上信息,生成一段简洁专业的求职打招呼语(100字以内)。
4. Bot 推送配置
bot:
  # 企业微信推送
  is_send: true
  
  # Bark 推送(iOS)
  is_bark_send: false

黑名单配置(可选)

编辑 boss/data.json

{
  "blackCompanies": [
    "公司A",
    "公司B"
  ],
  "blackRecruiters": [
    "某猎头",
    "某外包"
  ],
  "blackJobs": [
    "外包",
    "驻场"
  ]
}

🎨 配置示例

示例1:只用 Boss,启用 AI

enabled:
  - boss

boss:
  keywords:
    - Java开发
  cityCode:
    - 北京
  enableAI: true
  filterDeadHR: true
  sayHi: "您好,我对这个岗位很感兴趣..."
  expectedSalary: [25, 40]

ai:
  introduce: |
    5年Java开发经验,熟悉Spring全家桶。
  prompt: |
    我的背景:%s
    请生成专业的打招呼语。

示例2:Boss + 猎聘,不用 AI

enabled:
  - boss
  - liepin

boss:
  keywords:
    - Python开发
  cityCode:
    - 上海
  enableAI: false
  sayHi: "您好,我是一名Python开发工程师..."

liepin:
  keywords:
    - Python
  cityCode:
    - 上海

示例3:只筛选大厂

enabled:
  - boss

boss:
  keywords:
    - 后端开发
  cityCode:
    - 北京
  scale:
    - 10000人以上
  stage:
    - 已上市
    - D轮及以上
  expectedSalary: [30, 50]
  sayHi: "您好..."

❓ 常见问题

Q1: AI 服务连接失败

问题现象:

[WARN] ✗ AI 服务响应异常,状态码: 401

解决方案:

  1. 检查 .env 配置

    • API_KEY 是否正确
    • BASE_URL 是否可访问
    • 网络连接是否正常
  2. 测试 API

    curl -H "Authorization: Bearer YOUR_API_KEY" \
         https://api.ruyun.fun/v1/models
    
  3. 不影响投递

    • AI 失败会自动使用默认打招呼语
    • 投递功能正常工作

Q2: Playwright 报错找不到 Node.js

问题现象:

Error: Cannot find module 'package.json'

原因:

Playwright Java 版本需要 Node.js 运行时。

解决方案:

  1. 安装 Node.js

  2. 验证安装

    node --version  # 应显示 v20.x
    npm --version
    
  3. 确保在 PATH 中

    # Windows
    where node
    
    # Linux/Mac
    which node
    

Q4: 无法从任意目录启动

问题现象:

从其他目录运行找不到配置文件。

解决方案:

确保使用新版本(v2.0.1),新版本已修复此问题:

# 现在支持从任意目录启动
cd /home/user
java -jar /opt/get_jobs/get_jobs-v2.0.1.jar

# 会自动加载 /opt/get_jobs/ 下的配置

Q5: 怎么只启用部分平台?

解决方案:

config.yaml 顶部修改 enabled 列表:

# 只想用 Boss
enabled:
  - boss

# 想用 Boss 和猎聘
enabled:
  - boss
  - liepin

# 不想用的就不写或注释掉
enabled:
  - boss
  # - liepin  # 不用就注释

Q6: 怎么设置后台运行?

Linux/Mac:

# 使用 nohup
nohup java -jar get_jobs-v2.0.1.jar > get_jobs.log 2>&1 &

# 查看进程
ps aux | grep get_jobs

# 停止进程
kill -9 <pid>

# 查看日志
tail -f get_jobs.log

Windows:

# 使用 start
start /b java -jar get_jobs-v2.0.1.jar

# 或者创建 .bat 脚本
echo @echo off > start.bat
echo java -jar get_jobs-v2.0.1.jar >> start.bat

Q7: 配置修改后需要重启吗?

需要重启!

配置文件在程序启动时加载,修改后需要:

# 1. 停止程序(Ctrl+C 或 kill)
# 2. 修改配置文件
# 3. 重新启动
java -jar get_jobs-v2.0.1.jar

📚 详细文档

如需更详细的说明,请查看:


💬 获取帮助

遇到问题?

  1. 查看日志 - 日志里有详细的错误信息
  2. 检查文档 - 先查看相关文档
  3. 搜索 Issues - GitHub Issues
  4. 加入 QQ 群 - 群里有热心的小伙伴帮忙

🎊 总结

这次升级重点解决了:

配置文件加载问题 - 智能检测 JAR 目录
启动方式灵活性 - 支持多种配置方式
日志可读性 - 清晰的日志输出
代码可维护性 - 使用 Spring ResourceLoader

希望这次升级能让大家用得更顺手!

如果觉得项目有帮助,请给个 ⭐ Star 支持一下!如果你需要该工具,私信我吧~~

祝大家早日拿到心仪的 Offer!🎉


黑暗无论多么长,光明迟早总是会来的
断剑重铸之日,便是英雄归来之时