windows一键部署java项目
尹镇镇 人气:0前言
前段时间老大看我很闲...然后给我下达了一项很重要的任务:windows一键部署,需要把服务(jdk、tomcat、mysql、jar包、前端压缩包)打成一个exe应用程序,点击安装会启动所有服务,打开浏览器http://localhost:8080/xxx就可以访问系统了。听后感觉很神奇,网上找了找确实有这种案例,于是我就开始了学习和实践,一周之后不辱使命,完美地完成任务可以去交差了
准备工作
jdk用的1.8免安装版,只需要将安装好的jdk拷贝一份即可。下载地址
tomcat用的8版本,下载后缀windows-x64.zip的免安装版。下载地址
mysql用的5.7.24免安装版,高版本有很多问题(如不需要mysql,删除其相关代码即可)。下载地址
Inno Setup6,一款为Windows程序提供的免费安装程序,通过它可以将需要的文件压缩打包成exe安装程序,然后像安装程序一样解压到另外一个环境中。下载地址
编辑脚本
编辑脚本前先来简单学习一些cmd命令
cd:进入,"%cd%":当前目录,echo:打印输出,exit:退出,pause:按下任意键继续。。。
init-path.bat
echo 配置jdk环境变量开始 cd ..\jdk echo "%cd%" set jdkpath=%cd% echo %jdkpath% setx JAVA_HOME "%jdkpath%" -m setx CLASSPATH ".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar" -m echo %Path% echo %Path%|find /i "%JAVA_HOME%" && set IsNull=true || set IsNull=false echo %IsNull% if not %IsNull%==true ( reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ https://img.qb5200.com/download-x/d "%Path%;%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin" /f setx Path "%Path%;%%JAVA_HOME%%\bin" ) echo 配置jdk环境变量完毕 echo 配置mysql环境变量开始 cd ..\mysql echo "%cd%" set mysqlpath=%cd% echo %mysqlpath% setx MYSQL_HOME "%mysqlpath%" -m echo %Path% echo %Path%|find /i "%MYSQL_HOME%" && set IsNull=true || set IsNull=false echo %IsNull% if not %IsNull%==true ( reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ https://img.qb5200.com/download-x/d "%Path%;%%MYSQL_HOME%%\bin" /f ) echo 配置mysql环境变量完毕 exit
设置mysql的环境变量是因为可以使用mysql命令,以防sql脚本没初始化成功方便查找原因。例如:在mysql安装路径的bin目录下使用管理员打开cmd窗口
运行mysql -uroot -proot即可进入数据库,show databases; 查看所有数据库,use 数据库名称; 使用数据库,show tables; 查看所有表
init-mysql.bat
echo 安装mysql开始 cd ..\mysql set inipath=%cd%\my.ini cd bin "%cd%\mysqld.exe" -install mysql --defaults-file="%inipath%" "%cd%\mysqld.exe" --initialize-insecure --user=mysql --console echo 启动mysql并设置为自启动 net start mysql sc config mysql start=auto "%cd%\mysqladmin.exe" -u root password root echo 修改密码完毕 cd .. "%cd%\bin\mysql.exe" -uroot -proot < "%cd%\SqlFile\test.sql" echo 数据库初始化完成 exit
my.ini
[client] port=3306 default-character-set=utf8 [mysqld] wait_timeout=2880000 interactive_timeout = 2880000 max_allowed_packet = 100M sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
init-tomcat.bat
echo 安装tomcat执行service.bat脚本 cd ..\tomcat\bin echo "%cd%" call "%cd%\"%service.bat install tomcat8 echo -------tomcat install end------------------ echo 启动tomcat服务 sc start tomcat8 wmic service where name="tomcat8" startservice
start.bat
echo 启动java服务 echo "%cd%" set APP_NAME=java.jar setlocal enabledelayedexpansion set port=9091 echo find run port: %port% process for /f "tokens=1-5" %%a in ('netstat -ano ^| find ":%port%"') do ( if "%%e%" == "" ( set pid=%%d echo The process pid '!pid!' has been released ) else ( set pid=%%e echo the process pid for the current port is '!pid!' ) echo !pid! taskkill /f /pid !pid! ) echo 5 seconds close this bat echo Starting program %APP_NAME% java -Xms2048m -Xmx5120m -server -jar %APP_NAME% echo run %APP_NAME% Success pause
Inno Setup使用
Inno Setup在安装后的根目录下创建一个后缀.iss的文件,代码如下。
编辑完成后,点击上方Build——>Compile,等待完成打包,输出在同级目录下的Output文件
#define MyAppName "XXX管理系统" #define MyAppVersion "V1.0" #define MyAppPublisher "XXX科技有限公司" #define MyAppURL "http://www.baidu.com/" ; 基本配置 [Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) ; 单独标识,可以通过innosetup-QSP-6.0.5.exe 工具自动生成 AppId={{0167D65D-549A-4BA3-B88A-4814EC5A1D35} AppName={#MyAppName} AppVersion={#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} ; 默认安装路径 DefaultDirName=C:\Program Files (x86)\program\ DefaultGroupName={#MyAppName} ; 软件名称 OutputBaseFilename=deployment ; 软件图标 SetupIconFile=C:\Users\Administrator\Desktop\program\tool\download.ico ; 压缩方式 Compression=lzma ; yes 可以使文件更小 SolidCompression=yes ; 必需有管理员权限才能安装 PrivilegesRequired=admin ; 安装密码 ;Password=password ; 开启加密,需要一个iscrypt.dll文件,网上有下载的 ;Encryption=yes ; 语言配置 [Languages] Name: "chinesesimp"; MessagesFile: "compiler:Default.isl" ; 安装文件 [Files] ; 安装部署的源文件路径 Source: "C:\Users\Administrator\Desktop\program\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files ; 快捷键 [Icons] Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" Name: "{commondesktop}\快捷HTTP地址"; Filename: http://localhost:8080https://img.qb5200.com/download-x/dist Name: "{commondesktop}\运行XXX管理系统应用程序"; Filename: "{app}\tool\start.bat" Name: "{commondesktop}\安装须知"; Filename: "{app}\tool\安装须知.txt" ; 程序安装成功后执行脚本 [Run] Filename: "{app}\install\init-path.bat"; Filename: "{app}\install\init-mysql.bat"; Filename: "{app}\install\init-tomcat.bat"; [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkablealone ; 程序卸载成功后执行脚本 [UninstallRun] Filename:"{app}\uninstall\uninstall.bat"; ; 程序卸载成功后删除文件 [UninstallDelete] Type:filesandordirs;Name:"{app}\mysql" Type:filesandordirs;Name:"{app}\tomcat" Type:filesandordirs;Name:"{app}\install" Type:filesandordirs;Name:"{app}\uninstall"
FAQ:
如出现此错误,是因为安装mysql缺少文件,低版本 点击下载 Visual Studio 2013,高版本 点击下载 Visual Studio 2015
如出现此错误,是因为安装mysql缺少文件,点击下载 解压安装后将vcruntime140_1.dll复制到C:\Windows\System32,卸载mysql服务重新安装即可
运行jar包如出现此错误,是因为高版本的mysql需要SSL身份验证(低版本不需要),当然也可以不需要验证
解决方法:连接数据库的url后面加上参数即可,例如:jdbk:mysql://localhost:3306/testdb?characterEncoding=UTF-8&useSSL=false
本人原创,仅供参考。未经允许,禁止转载!!!
加载全部内容