SpringBoot项目如何进行打包部署

博客主要介绍Spring Boot项目的打包部署,不推荐打成war包,因适合前后端分离,打成jar部署更合适。详细说明了打成jar包部署的步骤,包括在application.yml配置端口、配置maven文件、在启动类添加代码、运行mvn命令生成jar包,最后执行java -jar命令启动,且在Windows和Linux上执行方式相同。

springboot的打包方式有很多种。有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的。

这里主要介绍如何打成jar进行部署。不推荐用war,因为springboot适合前后端分离,打成jar进行部署更合适。
首先需要在application.yml当中配置端口

server:
  port: 6868  # 服务端口

marven的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>tensquare_parent</artifactId>
        <groupId>com.wch</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>tensquare-eureke</artifactId>

    <dependencies>

        <!-- 引入eureka-server 依赖 add by WanChengHe 20190507 -->
       <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.wch.eureka.EurekaServer</mainClass>
                </configuration>
            </plugin>

        </plugins>

    </build>
</project>

注意最下面的build这块一定要配置否则打jar的时候会说找不 到主类

在启动类当中加上extends SpringBootServletInitializer并重写configure方法,这是为了打包springboot项目用的。

package com.wch.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServer extends SpringBootServletInitializer {
    
    public static void main(String[] args){
        SpringApplication.run(EurekaServer.class,args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(this.getClass());
    }
}

然后按照顺序运行mvn clean再mvn install,我是用idea执行的

然后就会出来我们需要的jar

 

然后到这个jar的根目录下执行java -jar smallsystem-0.0.1-SNAPSHOT.jar
这个执行方式windows和linux上都一样

 

<think>我们正在讨论如何打包部署Java Spring Boot应用程序。根据之前的引用,我们知道Spring Boot提供了许多便利,包括端口配置。但用户现在关心的是打包部署打包部署Spring Boot应用程序通常有两种方式: 1. 打包成可执行的JAR文件(包含嵌入式服务器,如Tomcat) 2. 打包成WAR文件(部署到外部应用服务器,如Tomcat) 下面我将分别介绍这两种方式。 ### 打包成可执行的JAR文件 这是Spring Boot推荐的方式,因为内置了Tomcat、Jetty或Undertow服务器,使得应用程序可以独立运行。 步骤: 1. 在项目的构建配置文件(如Maven的`pom.xml`或Gradle的`build.gradle`)中,确保使用了Spring Boot提供的构建插件。 2. 使用构建工具打包。 3. 运行生成的JAR文件。 以Maven项目为例: 首先,在`pom.xml`中确保有Spring Boot Maven插件: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> ``` 然后,在项目根目录下运行Maven打包命令: ```bash mvn clean package ``` 打包完成后,会在`target`目录下生成一个可执行的JAR文件(通常命名为`your-project-name-version.jar`)。运行该JAR文件: ```bash java -jar target/your-project-name-version.jar ``` 这样,应用程序就会启动,并监听默认的8080端口(除非你配置了其他端口)[^1]。 ### 打包成WAR文件 如果你需要将应用程序部署到外部的Servlet容器(如Tomcat),则需要打包成WAR文件。 步骤: 1. 修改构建方式为WAR。 2. 修改主类,使其继承`SpringBootServletInitializer`并重写`configure`方法。 3. 打包部署到外部服务器。 修改`pom.xml`,将打包方式改为`war`: ```xml <packaging>war</packaging> ``` 然后,在主应用程序类中(通常是带有`@SpringBootApplication`注解的类): ```java @SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 然后同样使用Maven打包: ```bash mvn clean package ``` 生成的WAR文件位于`target`目录下,将其复制到外部Tomcat的`webapps`目录中,然后启动Tomcat服务器即可。 ### 部署到云平台 除了传统的部署方式,Spring Boot应用程序也可以轻松部署到云平台(如Cloud Foundry、Heroku、AWS等)。这些平台通常支持直接部署可执行的JAR文件,或者通过容器化(如Docker)进行部署。 例如,使用Docker部署: 1. 创建一个Dockerfile,内容如下: ```Dockerfile FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` 2. 构建Docker镜像: ```bash docker build -t your-image-name . ``` 3. 运行容器: ```bash docker run -p 8080:8080 your-image-name ``` 以上是打包部署Spring Boot应用程序的常见方法。 §§相关问题§§ 1. 如何配置Spring Boot应用程序的端口号? 2. 如何为Spring Boot应用程序添加HTTPS支持? 3. 在部署到外部Tomcat时,如何解决静态资源访问问题? 4. 如何使用Docker Compose部署Spring Boot应用程序与数据库? 5. Spring Boot应用程序如何实现零停机部署?</think>### 打包部署 Java Spring Boot 应用程序 #### 一、打包方式 1. **可执行 JAR 文件(推荐)** Spring Boot 默认使用嵌入式服务器(Tomcat/Jetty),可直接打包为独立可执行 JAR: ```bash mvn clean package # Maven 项目 ./gradlew build # Gradle 项目 ``` 生成位置:`target/*.jar`(Maven)或 `build/libs/*.jar`(Gradle) 2. **WAR 文件(传统部署)** 需修改 `pom.xml`: ```xml <packaging>war</packaging> <!-- 修改打包格式 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> <!-- 声明外部Tomcat提供 --> </dependency> ``` 主类需继承 `SpringBootServletInitializer`: ```java @SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Application.class); } } ``` #### 二、部署方式 1. **独立运行 JAR** ```bash java -jar your-app.jar # 默认端口8080[^1] java -jar your-app.jar --server.port=9090 # 自定义端口 ``` 2. **外部服务器部署(WAR)** 将 WAR 文件复制到 Tomcat 的 `webapps/` 目录,启动 Tomcat 即可自动解压部署。 3. **容器化部署(Docker)** Dockerfile 示例: ```Dockerfile FROM eclipse-temurin:17-jdk-alpine VOLUME /tmp COPY target/*.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` 构建与运行: ```bash docker build -t spring-app . docker run -p 8080:8080 spring-app ``` 4. **云平台部署** - **AWS**: 使用 Elastic Beanstalk 上传 JAR - **Heroku**: `git push heroku main` - **Kubernetes**: 通过 Helm Chart 部署 #### 三、关键配置 1. **端口修改** 在 `application.properties` 中配置: ```properties server.port=8443 # HTTP 端口 server.ssl.enabled=true # 启用 HTTPS server.ssl.key-store=classpath:keystore.p12 ``` 2. **生产环境配置** ```properties spring.profiles.active=prod management.endpoints.web.exposure.include=health,info ``` #### 四、部署流程示例 ```mermaid graph LR A[代码开发] --> B[打包:mvn package] B --> C{部署方式} C --> D[JAR独立运行] C --> E[外部Tomcat] C --> F[Docker容器] D --> G[生产服务器] E --> H[应用服务器集群] F --> I[Kubernetes] ``` > **注意**:部署前务必测试 `java -jar` 的本地运行,确保打包无误。生产环境建议使用 **PM2** 或 **systemd** 守护进程管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值