如何部署一个Java项目

如何部署一个Java项目

部署 Java 项目通常需要考虑项目类型(如普通 Java 应用、Spring Boot 应用、Web 应用等)、运行环境和部署策略。以下是常见的 Java 项目部署方法:

1. 普通Java应用(Jar包形式)

适用于控制台应用、服务类应用等,通常通过java -jar命令运行。

部署步骤:

  1. 打包项目使用 Maven 或 Gradle 将项目打包为可执行 Jar:

    • Maven:mvn clean package(生成在target/目录)
    • Gradle:gradle clean build(生成在build/libs/目录)
  2. 上传Jar包到服务器 通过scp、FTP 或工具(如 Xftp)将 Jar 包传到目标服务器。

  3. 运行Jar包

    bash 复制代码
    # 直接运行(控制台关闭后程序终止)
    java -jar your-project.jar
    
    # 后台运行(推荐)
    nohup java -jar your-project.jar > app.log 2>&1 &
    
    # 指定JVM参数(如内存设置)
    nohup java -Xms512m -Xmx1024m -jar your-project.jar > app.log 2>&1 &
  4. 停止程序

    bash 复制代码
    # 查找进程ID
    ps -ef | grep your-project.jar
    
    # 终止进程
    kill -9 进程ID
    `

使用idea将项目打成Jar包

在我们没有学习Maven和Gradle之前,我们先来使用idea将项目打成Jar包。

创建项目

首先我们创建一个项目MyProject

创建项目,给项目起名,使用idea,JDK1.8,确定。

创建完成之后的结构目录如下:

标准的Java项目目录结构

java 复制代码
MyProject/
├── .idea/             # IntelliJ IDEA项目配置
├── out/               # 编译输出目录
├── src/               # 源代码目录
│   ├── main/
│   │   ├── java/      # Java源代码
│   │   └── resources/ # 资源文件
│   └── test/          # 测试代码
├── .gitignore         # Git忽略文件
├── MyProject.iml      # IntelliJ模块文件
└── jar/               # JAR文件目录(如果有)

我们在Main中写入:

java 复制代码
public class Main {
    public static void main(String[] args) {

        System.out.println("Hello, World!");
    }
}

将项目打成jar包

选择工件,加号,jar,从具有依赖项的模块,选择主类main,确定,更改路径输出到当前目录

确定之后,将输出目录选在当前目录,即:删除out之后的内容,包含out

构建

完成之后会在当前目录内生成一个jar包。

部署项目

将此jar包,上传到有java环境的地方,我这准备了一台Ubuntu2024虚拟机,这里为了方便演示,直接安装默认的JDK

bash 复制代码
sudo apt install default-jdk
java -version
javac -version

将本地打好的jar包上传到Ubuntu运行

bash 复制代码
pokes@userver:~$ java -jar MyProject.jar 
Hello, World!

虽然一瞬间就运行完了,但是这个过程我们要会。

相关推荐
weixin_5310946912 分钟前
heap_4内存管理
java·开发语言·算法
疯狂的维修18 分钟前
关于用C#写电机起保停控制
开发语言·c#
程序员南飞19 分钟前
win系统安装minio
java·数据结构·算法
Escalating_xu1 小时前
【Python】使用库:标准库、第三方库、pip、项目实战与程序打包
java·python·pip
Wang's Blog1 小时前
Java框架 SpringCloud 快速入门: 过滤器链执行顺序
java·spring cloud
geovindu1 小时前
rust: Abstract Factory pattern
开发语言·后端·设计模式·rust·抽象工厂模式
砚底藏山河1 小时前
量化实战:回测数据底座快照与版本管理进阶
java·大数据·python·金融·maven
“AI国潮设计-小江”1 小时前
《Python+SDXL实战:用ControlNet批量生成“英歌舞麻将糕”IP,附自动化脚本与商用思路》
开发语言·人工智能·python·prompt·aigc
Cc.Y2 小时前
Java零基础入门:封装与继承 —— 从“裸奔“到“穿衣服“,从“重复造轮子“到“站在巨人肩膀上“
java·开发语言
Escalating_xu2 小时前
【C 语言】深入理解指针(4):回调函数、qsort、void * 与泛型排序的模拟实现
java·c语言·开发语言