SpringBoot项目打包和运行

打包为JAR包并运行

先实现一个入门案例:

package org.example.myapp;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {
    
    @RequestMapping("/123")
    public String hello() {
        return "Hello World";
    }
}

确保它可以正常运行。现在希望将该项目打包成一个JAR包。不想再通过IDEA执行。

添加依赖

此时,需要添加一个打包插件(在pom.xml</dependencies>后面添加):

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

(如果是通过spring initializr创建的项目,上述代码会自动添加)

执行package指令进行打包

现在就具备了打包的前提条件,只需要执行maven的打包(package)指令即可。

要执行这个指令有两种途径。

途径1——通过IDEA的可视化界面进行打包。找到如下界面,找到package双击即可,点击绿色箭头所指的按钮可跳过测试阶段:

途径2——命令行方式(需要设置maven的环境变量):

在有pom.xml文件的项目路径下,启动cmd,执行mvn clean package指令。

采用mvn clean package -DskipTests可跳过测试。

执行JAR

两种方式都可以获得JAR

可在target文件夹下找到

可以将它复制到任意位置通过java -jar指令执行。

打包为WAR包并运行

希望将上面项目改为打包成WAR包,需要做一些修改。

首先要修改pom.xml文件,然后添加一些代码。

声明打包方式为war

    <groupId>org.example</groupId>
    <artifactId>myapp</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>myapp</name>
    <description>myapp</description>

pom.xml中添加<packaging>war</packaging>

排除内置Tomcat(可选

此为教材中的步骤,不做也没事,具体是否有影响可以尝试探究。

添加Tomcat依赖

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

注意<scope>provided</scope>

添加插件(必要)+指定项目打包后的名称(可选

    <build>
        <finalName>myapp</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

 修改SpringBoot启动类

这里不采用教材方式,教材中是直接去修改启动类代码。我们添加一个ServletInitializer类:

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(MyappApplication.class);
    }

}

修改完之后,依然通过命令行或是IDEA可视化界面进行打包,

得到xxx.war包,放在Tomcat安装目录下的webapps文件夹下,通过Tomcat安装目录下bin目录中的startup.bat命令启动Tomcat即可。

访问时候需要注意,不能通过http://localhost:8080/123,而是要通过http://localhost:8080/xxx/123

相关问题

ServletInitializer为何不需要用注解标注?

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Demo1Application.class);
    }

}

答:Servlet 容器(如 Tomcat)在启动时会自动识别并加SpringBootServletInitializer类的子类,无需显式注解标注。

因此,类名ServletInitializer是可以随便取的,关键是继承SpringBootServletInitializer

posted @   xkfx  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
历史上的今天:
2018-02-28 Linux 笔记 #04# Installing Tomcat 8 on Debian
点击右上角即可分享
微信分享提示