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

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

相关推荐
zhangfeng113318 分钟前
台大李宏毅老师讲解memba和类似linear atttenion 模型,笔记
开发语言·人工智能·笔记
Chris _data1 小时前
并发单词频率统计器 - 从零到完整实现(C# 实战)
开发语言·c#
idolao1 小时前
Oligo 7.60 安装教程:引物设计+Java 环境配置
java·开发语言
不知名的老吴1 小时前
Lambda表达式与新的Streams API相结合
开发语言·python
做个文艺程序员4 小时前
第04篇:K8s 弹性伸缩实战:HPA、VPA、KEDA——Java SaaS 应对流量洪峰的秘密武器
java·容器·kubernetes·弹性伸缩·自动扩容·ai 推理伸缩
石山代码8 小时前
ArrayList / HashMap / ConcurrentHashMap
java·开发语言
程序大视界9 小时前
【Python系列课程】Python正则表达式(下):环视、命名分组与日志实战
开发语言·python·正则表达式
枫叶v.9 小时前
Agent 分层存储架构设计:从记忆方法到中间件选型
开发语言·python
AskHarries9 小时前
系统提示词、开发者指令和用户输入的优先级
java·前端·数据库
daidaidaiyu10 小时前
ThingsBoard 规则链系统源码分析和自定义定时器
java