如何部署一个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!

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

相关推荐
evans在进步17 分钟前
Spring AI 从入门到实战:用 Java 实现大模型对话与 Tool Calling
java·人工智能·spring
evans在进步23 分钟前
LeetCode 189 轮转数组:三次反转原地解决,图解 Java 实现
java·算法·leetcode
bu_shuo1 小时前
MATLAB中的meshgrid和ndgrid
开发语言·matlab
我命由我123452 小时前
Jetpack Compose - MaterialExpressiveTheme 与 MaterialTheme、ColorScheme
android·java·开发语言·java-ee·kotlin·android jetpack·android runtime
晚安code2 小时前
Java 异常与日志规范:错误码、异常处理、日志规约一次讲清
java
深海呐2 小时前
仓颉语言是ArkTs的上层语言吗?就像kotlin和Java
java·开发语言·kotlin·仓颉
隔窗听雨眠2 小时前
OceanBase旁路导入与自增主键冲突深度解析:原理、排查与解决方案
java·服务器·数据库
白露与泡影2 小时前
聊聊物联网Java后端的核心技术难点(水表/电表/充电桩实战)
java·开发语言·物联网
gumichef2 小时前
第一章:面向对象核心——类和对象深度讲解
开发语言·c++
冷咖啡离 我的笨笨2 小时前
数据去重:通过 C# 删除 Excel 中的重复行
开发语言·c#·excel