SpringBoot项目如何进行打包部署

本文详细介绍了如何使用SpringBoot将项目打包成jar进行部署,包括配置application.properties、Maven配置、启动类改造以及部署流程。特别强调了jar部署的适用性和打包步骤。

springboot的打包方式有很多种。有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的。这里主要介绍如何打成jar进行部署。不推荐用war,因为springboot适合前后端分离,打成jar进行部署更合适。
首先需要在application.properties当中配置端口

server.port=8080
# http://localhost:8088/swagger-ui.html

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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.weixin</groupId>
    <artifactId>smallsystem</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>smallsystem</name>
    <description>smallsystem</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.2.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.weixin.SmallsystemApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>

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

 

image.png

image.png

 

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

package com.weixin;

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;

@SpringBootApplication
public class SmallsystemApplication extends SpringBootServletInitializer{

    public static void main(String[] args) {
        SpringApplication.run(SmallsystemApplication.class, args);
    }

    @Override//为了打包springboot项目
    protected SpringApplicationBuilder configure(
            SpringApplicationBuilder builder) {
        return builder.sources(this.getClass());
    }
}

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

 

image.png

image.png

 

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

 

image.png

image.png

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

 

image.png

image.png

如果是阿里云上的,需要通过阿里云把你指定的端口开放,如果是虚拟机上的,需要把防火墙什么的关掉,开放端口即可。

<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** 守护进程管理。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值