本项目已经过配置优化,支持完全脱离 IntelliJ IDEA 开发环境,在 Windows 命令行(CMD/PowerShell)中独立运行。程序会自动加载运行目录下的 config.ini 配置文件,并提供一键式交互下载循环。
当你的源码或 pom.xml 发生变更,或者第一次生成发布包时,需要执行此步骤。
确保项目根目录下的 pom.xml 中已包含 maven-shade-plugin 插件,该插件负责将 Selenium、Jsoup、Logback 等所有第三方依赖以及主清单属性(Main Class)融合打入单个 JAR 包:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<!-- 锁定的程序启动主类 -->
<mainClass>com.downloader.AutoM3u8App</mainClass>
</transformer>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>打开终端(CMD 或 PowerShell),进入项目根目录 D:\m3u8-downloader-decryptor>,执行以下构建命令:
mvn clean package -DskipTestsclean:清理历史编译缓存。package:编译并打包。-DskipTests表示跳过单元测试。- 成功标志:控制台末尾打印出明显的
[INFO] BUILD SUCCESS。
打包成功后,进入项目下的 target 目录,提取核心生成的独立胖包:
- 目标文件:
m3u8-downloader-decryptor-1.0-SNAPSHOT.jar(包含所有依赖,体积较大)。 - 注意:无需理会
original-开头的空壳 JAR 包。
为了方便日常高频使用,建议将运行环境抽离到独立文件夹中。
在电脑的任意位置(例如 D:\m3u8-dl\)新建一个干净的文件夹,将以下三个核心元素放置在同一层级:
D:\m3u8-dl\
├── m3u8-downloader-decryptor-1.0-SNAPSHOT.jar (从 target 目录复制而来)
├── config.ini (从项目根目录复制而来)
└── run.bat (手动创建的一键启动脚本)
⚠️ 关键原理:Java 程序在运行时通过相对路径读取config.ini。因此,config.ini必须与正在运行的 JAR 包躺在同一个文件夹内。
在上述独立运行目录下,使用 Notepad++ 新建一个名为 run.bat 的文件,填入以下代码:
@echo off
:: 1. 强制将当前 CMD 窗口的字符集切换为 UTF-8
chcp 65001 >nul
:: 2. 注入 Java 工具全局变量,强制 JVM 使用 UTF-8 编码输出
set JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
:START_DOWNLOAD
cls
echo ======================================================
echo M3U8 下载解密工具已启动
echo ======================================================
echo.
:: 3. 运行你的独立 JAR 包
java -jar m3u8-downloader-decryptor-1.0-SNAPSHOT.jar
echo.
echo ======================================================
echo 下载任务已结束。
echo ======================================================
echo.
:CHOOSE_ACTION
:: 4. 询问用户下一步操作,默认按回车直接继续
set "choice="
set /p choice="【按回车键】继续下载新视频,或输入 [q] 退出程序: "
:: 如果用户输入了 q 或 Q,则跳转到退出逻辑
if /i "%choice%"=="q" goto END_PROGRAM
:: 如果是其他输入(或直接按回车清空),则重新开始下载循环
goto START_DOWNLOAD
:END_PROGRAM
echo.
echo 正在安全关闭程序并退出...
choice /t 1 /d y /n >nul
exit如果在双击 run.bat 时出现一闪而过、中文选项失效或直接闪退的现象,通常是因为 Windows 批处理对 UTF-8 的兼容问题。请用 Notepad++ 打开该 run.bat,在上方菜单栏选择 “编码” (Encoding):
- 如果系统是较新的 Windows 11,推荐选择
UTF-8-BOM 编码格式保存。 - 如果仍然闪退,请选择
ANSI 编码格式保存。
- 一键双击:日常使用时,直接双击运行
run.bat即可,会自动解决高级终端带来的中文乱码问题。 - 无限循环下载:当一个视频下载并解密合并完成后,控制台会自动停下。此时无需输入任何内容,直接按下键盘上的【回车键(Enter)】,脚本会自动清屏并重新拉起下载器,等待你输入下一个网址。
- 安全平稳退出:输入字母
q(不区分大小写)并回车,控制台将安全释放 Java 虚拟机持有的文件流并自动关闭窗口,有效保护M:/缓存盘上的切片数据不被损坏。 - 动态改配:若需要更换代理(如切换
127.0.0.1:1611)或修改输出目录,直接用 Notepad++ 修改该目录下的config.ini并保存,下次循环或双击启动时会直接生效,无需重新进行 Maven 打包。