如何在IntelliJ IDEA中批量部署Java/Jakarta应用至多台GlassFish服务器及FTP传文件
解决方案
问题1:通过IntelliJ IDEA批量部署应用至多台GlassFish服务器
前置操作(每台远程GlassFish服务器)
- 开启远程管理权限:
- Windows服务器:进入GlassFish安装目录的
bin文件夹,执行asadmin enable-secure-admin,随后重启GlassFish服务 - Ubuntu服务器:进入GlassFish安装目录的
bin文件夹,执行sudo ./asadmin enable-secure-admin,重启GlassFish服务
- Windows服务器:进入GlassFish安装目录的
- 防火墙/安全组配置:开放GlassFish默认管理端口
4848,允许本地主机的IP访问(若本地IP动态变化,可临时放宽限制或使用动态DNS工具同步IP)
IntelliJ IDEA配置步骤
- 打开
Run/Debug Configurations界面,点击+选择GlassFish Server->Remote - 为每台服务器创建独立配置:
- Server标签页:选择本地GlassFish安装路径,填写远程服务器的公网IP/域名、管理端口,输入GlassFish管理员账号密码
- Deployment标签页:添加要部署的项目Artifact或WAR包,设置部署上下文路径
- 批量部署优化:安装
Run Configuration Groups插件,将所有远程GlassFish配置加入同一组,点击组运行按钮即可一次性完成多服务器部署
问题2:保存静态文件时批量上传至多台FTP服务器
方案一:使用IntelliJ IDEA插件快速实现
- 安装
FTP Sync或SFTP Sync插件(支持多服务器配置) - 配置多台FTP服务器:
- 在插件设置中添加每台服务器的连接信息(IP、端口、账号密码、远程目录)
- 为私有/公开静态文件目录分别设置同步规则,映射到FTP服务器对应目录
- 开启
Auto Upload on Save功能,本地静态文件保存时会自动批量上传至所有配置的服务器
方案二:自定义脚本+IntelliJ外部工具(灵活可控)
- 编写批量上传脚本(以Python为例,适配FTP):
(若使用SFTP,替换为import ftplib from pathlib import Path import sys # 多服务器配置,区分私有/公开目录 ftp_servers = [ {"host": "ubuntu-ftp-ip", "user": "ftp-user", "passwd": "ftp-pass", "remote_dir": "/var/www/public"}, {"host": "win-server1-ftp-ip", "user": "ftp-user", "passwd": "ftp-pass", "remote_dir": "D:/static/private"}, # 添加更多服务器配置 ] def upload_to_ftp(server_config, local_file): try: ftp = ftplib.FTP(server_config["host"]) ftp.login(server_config["user"], server_config["passwd"]) ftp.cwd(server_config["remote_dir"]) with open(local_file, 'rb') as f: ftp.storbinary(f'STOR {Path(local_file).name}', f) ftp.quit() except Exception as e: print(f"上传失败 {server_config['host']}: {str(e)}") if __name__ == "__main__": if len(sys.argv) < 2: sys.exit(1) target_file = sys.argv[1] for server in ftp_servers: upload_to_ftp(server, target_file)paramiko库实现即可) - 配置IntelliJ外部工具:
- 进入
Settings->Tools->External Tools,添加新工具,指定Python路径、脚本路径,参数填$FilePath$
- 进入
- 设置文件保存钩子:
- 进入
Settings->Tools->File Watchers,添加文件监视器,监听静态文件的修改事件,触发上述外部工具
- 进入
注意事项
- 私有静态文件需在FTP服务器端配置严格的目录访问权限,避免泄露
- 若服务器支持SFTP,优先选择SFTP协议保障传输安全
内容的提问来源于stack exchange,提问作者S.kh
相关产品推荐
相关产品推荐

