【springboot开发】项目打包、发布和部署

前言:可以打包成JAR包独立运行,也可以打包成WAR包部署到Tomcat容器中,若涉及到大规模部署,Jenkins成为最佳选择之一。本文主要介绍Maven项目的打包、发布和部署。

1. 项目打包

1.1 生成JAR包

Maven默认会打包jar包,也可以在pom.xml中指定打包方法:

    <groupId>com.example</groupId>
    <artifactId>buildBaseFrame</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>baseBuildFrame</name>
    <description>basic springboot frame</description>
    <packaging>jar</packaging>

主要是最后一行。
然后在项目根目录下的控制台执行:

mvn clean package -Dmaven.test.skip=true
  • mvn clean package包括mvn clean(清除项目taarget下的文件);mvn package(打包命令)
  • -Dmaven.test.skip=true:排除测试代码后打包
    执行完后会在target下生成jar包(项目名+版本号.jar)

1.2 生成WAR包

相对于jar包,war包需要安装Tomcat。
(1)pom.xml配置

    <groupId>com.example</groupId>
    <artifactId>buildBaseFrame</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>baseBuildFrame</name>
    <description>basic springboot frame</description>
    <packaging>war</packaging>

(2)排除内置Tomcat

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

scope属性设置为provided,这样在打包产生的war包就不会包含Tomcat相关的jar。
(3)注册启动类
改写启动类。

@SpringBootApplication
public class BuildBaseFrameApplication extends SpringBootServletInitializer {
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
                return application.sources(PackageApplication.class);
        }
        public static void main(String[] args) {
                SpringApplication.run(BuildBaseFrameApplication.class, args);
        }
}

(4)生成war包
和生成jar包一样

mvn clean package -Dmaven.test.skip=true

将打包好的war包复制到Tomcat服务器中的webapps目录下启动就行。

1.3 资源分离打包

为了方便修改配置文件、静态资源,可以把他们分开打包。只需要修改pom.xml就可以实现。

2. 运行部署

2.1 启动jar包

(1) 前台运行

java -jar package-1.0.0.jar

(2) 后台运行

nohup java -jar package-1.0.0.jar &

日志会被重定向到nohup.out文件中,也可以更改重定向文件:

nohup java -jar package-1.0.0.jar >spring.log 2>&1&

重定向到spring.log

2.2 生产环境部署

2.1是简单的部署运行,建议使用服务的方法来部署。
(1)jar包复制到/usr/local/目录下
(2)创建服务文件
先进入目录:

cd /etc/systemd/system/

使用vim springbootpackage.service创建服务文件:

[Unit]
Description=springbootpackage
After=syslog.target

[Service]
ExecStart=/usr/java/jdk1.8.0_221-amd64/bin/java -Xmx4096m -Xms4096m -Xmn1536m -jar /usr/local/spring-boot-package-1.0.0.jar

[Install]
WantedBy=multi-user.target

主要是定义服务名字,启动的命令和参数,使用时只需要修改Description和ExecStart。
(3)启动服务
手动操作服务:

// 启动服务
systemctl start springbootpackage
// 停止服务
systemctl stop springbootpackage
// 查看服务状态
systemctl status springbootpackage

// 查看服务日志
journalctl -u springbootpackage

还可以设置服务在系统开机时自动启动:

systemctl enable springbootpackage

3. Docker部署

3.1 Docker介绍

  • Docker是一个开源的应用容器引擎,可以让开发者打包应用及依赖包到一个可移植的容器中,然后发布到任何Linux机器上,还可以实现虚拟化。
  • Docker是C/S架构,包括Docker Daemon和Docker Client。

组成部分:

  • 镜像(Image)
    只读的,包含需要运行的组件。用来创建容器,一个镜像可以运行多个容器
  • 容器(Container)
    Docker的运行组件。容器是一个隔离环境,互不影响。
  • 仓库(Registry)
    负责管理和共享Docker镜像。

总结:镜像相当于打包好的程序,启动后运行在容器中,仓库是保存存储镜像的服务地址。

3.2 Springboot集成Docker

3.2.1 pom.xml

添加构建Docker的插件

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!-- Docker maven plugin -->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>1.0.0</version>
            <configuration>

<imageName>${docker.image.prefix}/${project.artifactId}</imageName
                >
                <dockerDirectory>src/main/docker</dockerDirectory>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>
        <!-- Docker maven plugin -->
    </plugins>
</build>

参数说明:

  • ${docker.image.prefix}:自定义的镜像名称。
  • :配置Dockerfile的路径。
  • ${project.artifactId}:项目的artifactId。
  • ${project.build.directory}:构建目录,默认为target。
  • ${project.build.finalName}:产出物名称,默认为${project.artifactId}-${project.version}。

3.2.2 构建镜像

(1)创建Docker文件
在src/main/docker下创建Dockerfile文件:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD spring-boot-docker-1.0.jar spring-boot-docker.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar", "/spring-boot-docker.jar"]

(2)生成镜像
把项目spring-boot-starter-docker复制到服务器中(示例为centos),进入项目根目录,使用命令:

mvn package docker:build

运行结果:
在这里插入图片描述
(3)使用docker images查看构建好的镜像
在这里插入图片描述
(4)运行镜像
创建并启动应用:

docker run -p 8080:8080 -t springboot/spring-boot-docker

查看正在运行的镜像:

docker ps
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Spring Boot部署发布项目的步骤: 1. 构建项目:首先,您需要使用Maven或Gradle等构建工具构建Spring Boot项目。确保您的项目已经成功构建,并生成了可执行的jar文件。 2. 配置应用程序:在项目的配置文件(application.properties或application.yml)中,您可以配置应用程序的各种属性,例如端口号、数据库连接等。 3. 打包项目:使用构建工具将项目打包成可执行的jar文件。您可以使用以下命令将项目打包成jar文件: ```shell mvn package ``` 4. 上传jar文件:将生成的jar文件上传到您要部署的服务器上。您可以使用FTP或SCP等工具将文件上传到服务器。 5. 配置服务器:在服务器上,您需要安装Java运行时环境(JRE)或Java开发工具包(JDK)。确保您的服务器上已经安装了适当的Java版本。 6. 启动应用程序:使用以下命令在服务器上启动Spring Boot应用程序: ```shell java -jar your-application.jar ``` 请将"your-application.jar"替换为您上传的jar文件的名称。 7. 验证应用程序:在浏览器中访问您的应用程序的URL,确保它能够正常运行。您可以使用服务器的IP地址或域名加上应用程序的端口号来访问应用程序。 8. 后台运行应用程序:如果您希望应用程序在后台运行,您可以使用以下命令: ```shell nohup java -jar your-application.jar > /dev/null 2>&1 & ``` 这将使应用程序在后台运行,并将输出重定向到/dev/null。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值